我知道這很容易理清,而且可能的答案只是在我的鼻子下面,但是:我試圖創建一個自定義綁定來編輯HTML5的內容this link示例,我無法讓它與observableArray()一起使用。淘汰內容與數組值的綁定
表正在顯示在用foreach數據bindig視圖這樣的:
<tbody data-bind="foreach: customers">
<tr data-bind="attr: {id: $index}">
<td style="text-align: center;">
<span class="label label-primary" data-bind="html: Id"></span>
</td>
<td data-bind="html: Name, attr: {id: 'Nome'}, contentEditable: true"></td>
</tr>
</tbody>
視圖模型是這樣的:
功能視圖模型(){
var self = this;
self.data = '@jsonList';
self.customers = ko.observableArray(JSON.parse(self.data));
self.editable = ko.observable(false);
for (i = 0; i < self.customers().length; i++) {
self.customers()[i]['Details'] = '/Anagrafica/Details/' + self.customers()[i]['Id'];
self.customers()[i]['Delete'] = '/Anagrafica/Delete/' + self.customers()[i]['Id'];
};
ko.bindingHandlers.htmlEdit= {
update: function (element, valueAccessor) {
var value = ko.unwrap(valueAccessor());
}
};
ko.bindingHandlers.contentEditable = {
init: function (element, valueAccessor, allBindingsAccessor) {
var value = ko.unwrap(valueAccessor()),
htmlEdit= allBindingsAccessor().htmlEdit;
$(element).on("input", function() {
if (ko.isWriteableObservable(htmlEdit)) {
htmlEdit(this.innerHTML);
}
});
},
update: function (element, valueAccessor) {
var value = ko.unwrap(valueAccessor());
element.contentEditable = value;
$(element).trigger("input");
}
};
};
var viewModel = new ViewModel();
ko.applyBindings(viewModel);
在我對代碼本身有點困惑,因爲我不明白如何將它設置爲指向數組上的元素。
注意:該數組已填充,我沒有顯示內容的問題。
謝謝我提前尋求幫助。
編輯:在這裏我想補充的jsfiddle https://jsfiddle.net/wxn34p45/的代碼
感謝您intrest和我的小提琴編輯(我在使用它可怕),但沒有:它仍然沒有得到修改。最後的目標是用Ajax調用來改變原始模型^^「但我已經知道如何調用 – Blacky
我的意思是,內容應該可以用」contentEditable:editable「進行編輯,這樣自定義處理程序將會改變在可觀察數組中的參數 – Blacky
好的,什麼觸發了可編輯和不可編輯之間的變化?從您提供給其他SO帖子的鏈接中接受的答案的例子中,他們使用複選框來更改「self」的值。 editable'。 – ASindleMouat