2013-09-25 58 views
1

我有一个KendoUI网格,我正在使用MVVM绑定。我也有一个用户界面,用户可以输入数据并选择添加按钮。按下添加按钮后,新数据将被添加到模型中。网格设置为自动同步。KendoUI网格 - MVVM绑定 - 对象对象]没有方法'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是来自服务器的空数组。奇怪的是,如果我真的添加一个条目到服务器然后一切正常,我可以添加新项目没有问题。有任何想法吗?我猜这是与我如何添加新项目有关。

+0

如果我禁用自动同步然后我就可以成功添加到网格。然而,当我调用grid.sync()时,错误再次出现。这真是奇怪的行为,我看不出我的代码可能会出现什么问题。一个剑道bug可能? – keitn

回答

1

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

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

这里有一个应该与你的非常相似的现场示例。

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

+1

问题是Create函数从未被触发。我将新记录添加到模型中,而不是直接添加到网格中。从下拉列表中选择项目时添加新记录。在我的模型中,ID字段是JOIN_OBJECT_ID,当我添加一个新记录到我的模型时,我添加了一个唯一的JOIN_OBJECT_ID值。我正在使用MVVM绑定。 – keitn