【发布时间】:2014-12-10 14:07:32
【问题描述】:
也许我误解了 Kendo 的 MVVM 实现的概念,但是...我有一个简单的 Kendo UI Mobile view,它是数据绑定到视图模型的:
var myViewModel = kendo.observable({
myEntity: null,
onViewShow: function (e) {
var bindingEntity = myStaticDataSource[0];
myViewModel.set("myEntity", bindingEntity);
}
});
myStaticDataSource 是作为简单 JavaScript 对象的“实体”的静态数组,具有 name 或 description 等字段。
视图及其输入字段绑定到视图模型:
<div data-role="view" data-layout="default" data-model="myViewModel" data-bind="events: { show: onViewShow }">
<form>
<ul data-role="listview" data-style="inset">
<li>
<label>
Name
<input type="text" data-bind="value: myEntity.name" />
</label>
</li>
</ul>
</form>
</div>
当用户更改输入字段时,数据绑定视图模型实体myEntity中的相应字段(例如name)会更新。但是:我所期望的是myStaticDataSource 中的实体也会更新,因为我没有克隆对象。但事实并非如此!它的价值保持在原始价值上。为什么是这样?我是否遗漏了有关 Kendo 的 MVVM 处理的一些内容?
【问题讨论】:
-
您正在通过使用
var bindingEntity = myStaticDataSource[0]将元素分配给变量然后将该变量绑定到视图来克隆它。它完全按照你的吩咐去做。变量bindingEntity(即myEntity)正在更新,而不是myStaticDataSource。 -
@Brett 这不是真的。
var bindingEntity = myStaticDataSource[0]不会克隆项目,调用 kendo.set()会产生副作用。
标签: mvvm kendo-ui kendo-mobile kendo-mvvm