【问题标题】:KendoUI Grid - MVVM Bindings - object Object] has no method 'isNew'KendoUI Grid - MVVM Bindings - object Object] 没有方法'isNew'
【发布时间】:2013-09-25 07:49:08
【问题描述】:

我有一个用于 MVVM 绑定的 KendoUI 网格。我还有一个用户界面,用户可以在其中输入数据并选择添加按钮。按下添加按钮后,新数据将添加到模型中。网格设置为自动同步。

我遇到的问题是,一旦添加了新项目,我就会收到错误“[object Object] has no method isNew”

我的网格如下:

      $("#objJoinGrid").kendoGrid({
        dataSource: {
            transport: {
                create: function (operation) {
                    operation.success();
                },
                update: function (operation) {
                    operation.success();
                },
                destroy: function (operation) {
                    operation.success();
                },
                read: function (operation) {
                    operation.success(datasetMetaModel.joinList.ObjectList);                        
                }
            },
            schema: {
                model: {
                    id: "JOIN_OBJECT_ID",
                    fields: {
                        JOIN_OBJECT_ID: { type: "number" },
                        JOIN_OBJECT_NAME: { type: "string" }                            
                    }
                }
            },
            autoSync: true
        },
        height: 220,
        columns: [
            { field: "JOIN_OBJECT_ID", width: "130px" },
            { field: "JOIN_OBJECT_NAME", width: "130px" }        
        ]            
     });

然后我将我的模型绑定到网格:

   datasetMetaModel = kendo.observable({
        joinList: datasetModel.JoinStructure,
    });

    kendo.bind($("#areaDiv"), datasetMetaModel);

并且在添加按钮的点击事件中:

$("#addDataset").bind("click", function () {
    var dropdownlistPO = $("#objectListing").data("kendoDropDownList");

    datasetMetaModel.joinList.ObjectList.push({
        JOIN_OBJECT_ID: dropdownlistPO.value(),
        JOIN_OBJECT_NAME: dropdownlistPO.text()
    });
});

在这个实例中 datasetModel.JoinStructure 是一个来自服务器的空数组。奇怪的是,如果我实际上向服务器添加了一个条目,那么一切正常,我可以毫无问题地添加新项目。有任何想法吗?我猜这与我添加新项目的方式有关。

【问题讨论】:

  • 如果我禁用自动同步,我可以成功添加到网格中。但是,当我调用 grid.sync() 时,错误再次出现。这真是奇怪的行为,我看不出我的代码有什么问题。可能是剑道虫子?

标签: mvvm grid kendo-ui


【解决方案1】:

尝试更改您的创建以实际返回新创建的记录。例如

create: function(e) {
        var item = e.data;
        item.Id = data.length + 1;
        e.success(item);
    }

这是一个与你的非常相似的实时示例。

http://jsbin.com/iDeloNo/1/edit

【讨论】:

  • 问题是 Create 函数永远不会被触发。我将新记录添加到模型中,而不是直接添加到网格中。从下拉列表中选择项目时添加新记录。在我的模型中,当我向模型添加新记录时,ID 字段是 JOIN_OBJECT_ID,我使用唯一的 JOIN_OBJECT_ID 值添加它。我正在使用 MVVM 绑定。
猜你喜欢
  • 1970-01-01
  • 2016-01-03
  • 2015-06-09
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 2015-05-08
  • 1970-01-01
相关资源
最近更新 更多