Kendo UI MVVM中的数据绑定对象

马蒂亚斯

也许我对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>

当用户更改输入字段时,name数据绑定视图模型实体中的相应字段(例如)会更新myEntity但是:我本来希望的是实体中的实体也myStaticDataSource被更新了,因为我没有克隆对象。但这不是!它的值保持原始值。为什么是这样?我是否缺少有关Kendo的MVVM处理的信息?

峰值编码

这是Kendo Observable对象和数组的副作用。当您ObservableObject使用.set()方法将属性分配给时,它还希望使该分配的项目也可观察。您的项目myStaticDataSource可能是普通的JS对象,而不是Kendo Observables,因此KendoObservableObject为您包装了新对象这意味着对象不再相同。

这可能更有意义:

var items = [{name: "item one"}];
var vm = kendo.observable({item: undefined});
vm.set("item", items[0]);
vm.item === items[0]; // returns FALSE
items[0] instanceof kendo.data.ObservableObject // returns FALSE
vm.item instanceof kendo.data.ObservableObject // returns TRUE


var items = kendo.observable([{name: "item one"}]);
var vm = kendo.observable({item: undefined});
vm.set("item", items[0]);
vm.item === items[0]; // returns TRUE
items[0] instanceof kendo.data.ObservableObject // returns TRUE
vm.item instanceof kendo.data.ObservableObject // returns TRUE

为此的“修复”是执行以下任一操作:


制作myStaticDataSource一个剑道DataSource,它将使您放入剑道的所有物品都变成剑道ObservableObject

var myStaticDataSource = new kendo.data.DataSource({
    data: [
        {name: "Bob"}
    ]
};

制作myStaticDataSource一个剑道ObservableArray,它将使您放入其中的所有物品ObservableObject

var myStaticDataSource = kendo.observable([
    {name: "Bob"}
]);

使myStaticDataSource数组中的一项ObservableObject

var myStaticDataSource = [
    kendo.observable({name: "Bob"})
];

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

kendo ui模板绑定

来自分类Dev

kendo ui模板绑定

来自分类Dev

Kendo Ui模型绑定3级对象

来自分类Dev

Kendo UI用于循环数据绑定

来自分类Dev

使用Icenium的Kendo ui MVVM

来自分类Dev

Kendo UI网格绑定错误

来自分类Dev

Kendo UI Tabstrip不绑定

来自分类Dev

如何在Kendo UI中绑定模型?

来自分类Dev

将ViewModel绑定到HTML元素Kendo UI MVVM

来自分类Dev

Kendo UI ListView中的Kendo UI Jquery ContextMenu

来自分类Dev

Kendo UI中的数字格式

来自分类Dev

Kendo UI模板中的Javascript

来自分类Dev

Kendo UI 中的图标翻转

来自分类Dev

在Kendo ui mvvm中仍然无法对输入进行按键自定义绑定

来自分类Dev

Kendo UI图表-数据绑定后更新数据源

来自分类Dev

Kendo UI-属性更改的MVVM

来自分类Dev

带有MVVM的Telerik Kendo UI

来自分类Dev

Kendo UI MVVM网格刷新/重新加载

来自分类Dev

Kendo UI:使用 MVVM(数据属性)使用分层数据网格时如何绑定网格/详细信息模板

来自分类Dev

解除绑定Kendo UI网格事件

来自分类Dev

Kendo UI Scheduler无法正确绑定资源

来自分类Dev

Kendo UI树形图JSON绑定

来自分类Dev

Kendo UI将datePicker绑定到列

来自分类Dev

Kendo UI树形图JSON绑定

来自分类Dev

Kendo UI网格-绑定到导航属性

来自分类Dev

与angularjs和kendo ui的绑定过程

来自分类Dev

数据绑定Kendo UI网格后保留展开的行

来自分类Dev

Kendo UI窗口不响应数据绑定的可见设置

来自分类Dev

Kendo UI自动完成数据绑定事件不会触发