我想在knockoutjs中爲此創建一個可重用的自定義控件,我已經在knockout中編寫了以下代碼。當用戶單擊NF字段的文本框切換到下拉列表時,反之亦然。我想要將數據從viewmodel傳遞到knockout組件,並希望在viewmodel中獲取它們的數據。knockoutjs可重用模板控件
ko.components.register('nf-editor', {
viewModel: function (params) {
var self = this;
self.options = ko.observableArray(params && params.data || '');
self.text=ko.observable(params && params.text || '');
self.optionText=ko.observable(params && params.optionText || '');
self.optionsCaption=ko.observable(params && params.optionsCaption || '');
self.isNF = ko.observable(false);
self.change = function() {
self.isNF(!self.isNF());
};
},
template: '<input maxlength="50" data-bind="textInput:text,visible:!isNF()" type="text" /> ' + '<select name="rep_prefix_nfddl" data-bind="optionsText:optionText,options: options,visible:isNF" />'+
'<a href="#" data-bind="click:change">NF</a>'
});
function VM() {
var self = this;
self.options = ["Test", "Test1"];
self.optionText="Demo";
self.text="Test";
}
ko.applyBindings(new VM());
<div data-bind='component: { name: "nf-editor", params: { data: options,text:text }
}'></div>
<div data-bind="text:text"/>
感謝snippet.I想清理我的看法,使我決定保持內部組件一切的代碼。 –
@Santosh我已經更新了我的答案,所以模板在組件中。 –