我试图使用listview显示项目列表,例如:
<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
)(尽管交换机的值已正确更新)。update
处理程序(即使第一个选择的交换机也是如此,尽管第一个切换开关的DataSource已更新)。您可以在JSFiddle中查看它:http://jsfiddle.net/OnaBai/K7wEC/
如何让DataSource更新并调用update
处理程序?
答案 0 :(得分:1)
好的,解决方案非常简单:在autoSync
定义中将true
设置为DataSource
。
var my_model = kendo.observable({
ds: new kendo.data.DataSource({
transport: {
read: readData,
update: updateData,
create: updateData,
remove: updateData
},
autoSync: true,
pageSize: 10,
schema: {
model: {
id: "id",
fields: {
id: { type: "number" },
name: { type: "string" },
active: { type: "boolean" }
}
}
}
})
});
请参阅此处修改的JSFiddle:http://jsfiddle.net/OnaBai/K7wEC/1/