Knockoutjs并动态更改模板

时间:2014-06-23 06:12:07

标签: javascript knockout.js

我使用带有模板插件的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}])
    });
});

由于

1 个答案:

答案 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}]);
});

更新模型应更新以前绑定的内容。

相关问题