1

MVVM バインディングで使用している KendoUI グリッドがあります。また、ユーザーがデータを入力して [追加] ボタンを選択できる UI もあります。追加ボタンを押すと、新しいデータがモデルに追加されます。グリッドは自動同期に設定されています。

私が抱えている問題は、新しいアイテムが追加されると、「[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 はサーバーから取得した空の配列です。奇妙なことに、実際にサーバーに 1 つのエントリを追加すると、すべてが機能し、問題なく新しいアイテムを追加できます。何か案は?新しいアイテムを追加する方法に関係があると思います。

4

1 に答える 1