我正在尝试使用列表视图显示项目列表,例如:
<div data-role="view" data-model="my_model">
<ul data-role="listview" data-bind="source: ds" data-template="list-tmpl"></ul>
</div>
我有一个view
使用模型的地方my_model
和一个绑定到的地方。listview
source
ds
我的模型是这样的:
var my_model = kendo.observable({
ds: new kendo.data.DataSource({
transport: {
read: readData,
update: updateData,
create: updateData,
remove: updateData
},
pageSize: 10,
schema: {
model: {
id: "id",
fields: {
id: { type: "number" },
name: { type: "string" },
active: { type: "boolean" }
}
}
}
})
});
每个项目包括一个id
,一个name
(即一个string
)和一个boolean
命名的active
。
用于渲染每个元素的模板是:
<script id="list-tmpl" type="text/kendo-tmpl">
<span>#= name # : #= active #</span>
<input data-role="switch" data-bind="checked: active"/>
</script>
我在哪里显示name
和(用于调试)的值active
。另外,我渲染了一个switch
绑定到active
.
您应该会看到如下内容:
观察到的问题是:
- 如果你点击一个开关,你会看到
active
旁边的值name
改变了它的值(如预期的那样)但是如果你选择另一个开关,值(既不在旁边name
也不在DataSource
)不会更新(尽管值开关已正确更新)。 - DataSource 中的
update
处理程序永远不会被调用(即使是第一个选择的开关,尽管第一个切换开关的 DataSource 已更新)。
您可以在 JSFiddle 中查看:http: //jsfiddle.net/OnaBai/K7wEC/
如何使 DataSource 得到更新并update
调用处理程序?