Bazı ek özellikler sağlamak için Handsontable civarında bir sarıcı oluşturmaya çalışıyorum. Aşağıdakileri yapmayı denedim ve yapıcı çalışmasına rağmen, loadData işlevi geçersiz kılmıyor gibi görünüyor. Herhangi bir tavsiye?Handsontable'ı Genişletme
Bunu 45.0.2454.101m numaralı Chrome'da test ettik.
"use strict";
class CustomHandsontable extends Handsontable {
constructor(container, options) {
console.log("in constructor");
super(container, options);
}
loadData(data) {
console.log("load data");
super.loadData(data);
}
}
DÜZENLEME: Krom henüz tam ECMA6 desteklemediği okuduktan sonra aşağıdaki denedim ama oldukça üst LoadData yöntemini çağırmak anlamaya olamaz.
function CustomHandsontable (container, options) {
console.log("constructor");
this.loadData = function(data) {
console.log("loadData");
// TODO how do you call the parent load data function?
}
};
CustomHandsontable.prototype = Object.create(Handsontable.prototype);
CustomHandsontable.prototype.constructor = CustomHandsontable;
DÜZENLEME:
Uncaught TypeError: Cannot read property 'call' of undefined
"use strict";
var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var Hot = (function (_Handsontable) {
_inherits(Hot, _Handsontable);
function Hot(localOptions, container, options) {
_classCallCheck(this, Hot);
console.log("in constructor");
_get(Object.getPrototypeOf(Hot.prototype), "constructor", this).call(this, container, options);
}
_createClass(Hot, [{
key: "loadData",
value: function loadData(data) {
console.log("load data");
_get(Object.getPrototypeOf(Hot.prototype), "loadData", this).call(this, data);
}
}]);
return Hot;
})(Handsontable);
ES6 kodunuzu ES5'e aktarmak için Babel'i kullanmayı denediniz mi? Bu günlerde kod yazmak için oldukça standart bir yol. Handsontable, halihazırda ES6 ve ES7 kodlama kararlarını kabul ettiği için tavsiye edilebilir. – ZekeDroid
@ZekeDroid: Babel'deki bahşiş için teşekkürler. Denedim, ancak bir hata alıyorum (güncellenmiş yazıma bakın). –
Evet, bundan ne yapacağımdan emin değilim. Sadece merak ettim, Handsontable'ı genişletmene gerek var mı? Özel yapımların nasıl oluşturulacağına dair belgelerini okuyabilirsiniz, aksi halde normal veri manipülasyonlarının ve JS'nin amaçlarına hizmet etmediği neredeyse hiçbir durumun olmadığını tespit ettim – ZekeDroid