渡されたものに基づいてモジュールを作成するハンドラーを作成しようとしています。ここに私が持っているものがあります:
ko.bindingHandlers.CreateModule = {
init: function (element, valueAccessor, allBindingAccessor, viewModel, bindingContext) {
var value = ko.utils.unwrapObservable(valueAccessor()),
childContext;
var module = $(element).kendoCustom();
//var module = $(element)['kendo' + value]();
childContext = bindingContext.createChildContext(module.data('kendoCustom').options);
ko.applyBindingsToDescendants(childContext, element);
return { controlsDescendantBindings: true };
}
};
var Custom = Widget.extend({
init: function (element, options) {
Widget.fn.init.call(this, element, options);
this._create();
},
options: {
name: 'Custom',
isSimple: true,
venues: ko.observableArray(),
test: ko.computed(function () {
// Heres on of the main issues
return this.venues().length > 0 ? this.venues() : {};
}),
kendoGrid: {
data: this.test,
sortable: true,
scrollable: true,
columns: ['Name', 'Time','Event'],
height: '100%'
},
update: function () { ... }
},
_templates: {
main: '<div style="height:100%"></div>',
simple: '<div data-bind="kendoGrid: kendoGrid"></div>'
},
_create: function () {
var that = this;
that.options.update();
that.element.append(that._templates.simple);
}
});
ui.plugin(Custom);
ウィジェット内のプロパティにアクセスする方法がわかりません。たとえば、'test' 関数内では、'this' は常に Window を参照していますが、会場にアクセスできるようにする必要があります。内部からウィジェット内の他のプロパティにアクセスするにはどうすればよいですか?