我使用带有模板插件的knockoutjs(Using Underscore Template with Knockout using interpolate due to asp.net) 如果我有一个标题和一个列表:
<ul data-bind="template: { name: 'people' }"></ul>
<script type="text/html" id="people">
<h2>{{= hdr}}</h2>
{{ _.each(people(), function(item) { }}
<li>{{=item.name }} ({{=item.age }})</li>
{{ }); }}
</script>
也是一个按钮
<button id="bindclick">Click</button>
和我使用淘汰赛的ja代码:
ko.applyBindings({
hdr: "People",
people: ko.observableArray([{name:"name1",age: 45},{name:"name2",age: 33}])
});
如何操作,可以通过单击按钮而不是&#34来更改模板值;未捕获错误:您无法多次将绑定应用于同一元素。&#34;?:
$("#bindclick").click(function() {
ko.applyBindings({
hdr: "People2",
people: ko.observableArray([{name:"name1",age: 45}])
});
});
由于
答案 0 :(得分:2)
您只需要使用模型对象调用applyBindings一次。
稍后在您的点击处理程序中,您只需更新您的模型。
例如:
var theModel = {
hdr: ko.observable('People'),
people: ko.observableArray([{name:"name1",age: 45},{name:"name2",age: 33}])
};
ko.applyBindings(theModel);
$('#bindclick').click(function () {
theModel.hdr('People2');
theModel.people([{name:"name1",age: 45}]);
});
更新模型应更新以前绑定的内容。