我知道这很容易理清,而且可能的答案只是在我的鼻子下面,但是:我试图创建一个自定义绑定来编辑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