Javascript KnockoutJS,如何使用HTML5内容更新视图模型?
我有以下代码: HTML:Javascript KnockoutJS,如何使用HTML5内容更新视图模型?,javascript,knockout.js,Javascript,Knockout.js,我有以下代码: HTML: <ul class="list" data-bind="foreach: list"> <li class="title" data-bind="text:title" contenteditable="true"></li> <li class="item" data-bind="text:item" contenteditable="true"></li> </ul> <
<ul class="list" data-bind="foreach: list">
<li class="title" data-bind="text:title" contenteditable="true"></li>
<li class="item" data-bind="text:item" contenteditable="true"></li>
</ul>
<button type="button">Save</button>
var data = {
"list": [{
"title" : "title one",
"item" : "item one"
}]
}
var viewModel=
{
list : ko.observable(data.list)
};
ko.applyBindings(viewModel);
$("button").on("click", function(){
var vm = viewModel;
ko.applyBindings(vm);
var data = ko.toJSON(vm);
console.log(data);
});
但是,当我执行此操作时,会出现以下错误:
Uncaught Error: You cannot apply bindings multiple times to the same element.
knockout-3.1.0.js:58
我想做的是更改其中一个项目的文本,并在单击“保存”按钮时将其保存到视图模型
小提琴:
事情很少
拯救
var viewModel=
{
名单:ko.Array([{
“标题”:ko.可观察(“标题一”),
“项目”:可观察到的ko(“项目一”)
}])
};
应用绑定(视图模型);
$(“按钮”)。在(“单击”,函数(){
var data=ko.toJSON(viewModel);
控制台日志(数据);
});
要知道,您可能会从ajax调用加载JSON数据,将所有值更改为ko.observable是很繁琐的。如果需要,可以试试。这回答了我提出的问题,似乎很有效。但很明显,我可能需要重新思考我是如何做事的。非常感谢。
<ul class="list" data-bind="foreach: list">
<li class="title"><input data-bind="value:title" /></li>
<li class="item"><input data-bind="value:item" /></li>
</ul>
<button type="button">Save</button>
var viewModel=
{
list : ko.observableArray([{
"title" : ko.observable("title one"),
"item" : ko.observable("item one")
}])
};
ko.applyBindings(viewModel);
$("button").on("click", function(){
var data = ko.toJSON(viewModel);
console.log(data);
});