Knockout.js 数据绑定不使用通过JavaScript编程设置的模板
我不熟悉敲除JS,在使用jQuery text/x-jQuery-tmpl时,我找不到数据绑定不工作的原因 使用:jQuery 1.5.2;淘汰赛1.3.0测试版 我试图将无序列表绑定到视图模型中的可观察数组,并将列表项对象上的复选框绑定到另一个具有“选中”绑定的ko.observable数组 工作模板代码为:Knockout.js 数据绑定不使用通过JavaScript编程设置的模板,knockout.js,jquery-templates,Knockout.js,Jquery Templates,我不熟悉敲除JS,在使用jQuery text/x-jQuery-tmpl时,我找不到数据绑定不工作的原因 使用:jQuery 1.5.2;淘汰赛1.3.0测试版 我试图将无序列表绑定到视图模型中的可观察数组,并将列表项对象上的复选框绑定到另一个具有“选中”绑定的ko.observable数组 工作模板代码为: <ul data-bind="foreach: viewModel.booksFromServer()"> <li> <input type="
<ul data-bind="foreach: viewModel.booksFromServer()">
<li>
<input type="checkbox" data-bind="checked: viewModel.selectedBooks(), value: Id" />
</li>
</ul>
你的想法是什么?事先谢谢你的帮助。
Piotr在Knockout中使用jQuery模板时,您永远不会真正想直接调用
.tmpl
,因为它不会进行数据绑定或清理任何现有绑定
您需要使用模板
绑定:
调用
showBookList
时,可以填充使用模板绑定绑定的observableArray,用户界面将相应更新。这样,视图模型实际上只处理数据,而不依赖于用户界面的结构(视图模型代码中没有对jQuery选择器或元素的引用)。如果模板1起作用,为什么要让模板2发挥作用?模板1是在beta版中引入的一种新的工作方式,只是出于好奇。我想知道我是否做了一些不正确的事情,或者这只是一个错误的方法。RP Niemayer的回答:“它不会进行数据绑定或清理任何现有绑定”解决了我的疑问。感谢您的解释。我正在将淘汰框架引入一个现有的项目中,所以我认为我可以保留大块内容,并在需要时引入一些KO。
<script type=""text/x-jquery-tmpl" id="bookTemplate">
{{each data}}
<li>
<input type="checkbox" value="${Id}" data-bind="checked: selectedBooks" />
</li>
{{/each}}
</script>
var viewModel ={
selectedBooks = ko.observableArray(),
booksFromServer = ko.observableArray()
//other properties and methods
showBookList: function(bookList){
$("#bookTemplate").tmpl({data: bookList}).appendTo("#book_list");
}
}