Breeze和Knockout没有正确绑定

时间:2013-10-11 09:33:21

标签: javascript binding knockout.js breeze knockout-2.0

我正在尝试使用微风和淘汰赛的样本

manager.executeQuery(query).then(function(result){
    console.log(result);    
    ko.applyBindings(result);
}).fail(function(e) {
    console.log(e); 
     alert(e);  
});

在控制台中打印时。我在路径data.XHR.result.responseJSON中有两个对象,在data.results

中有两个对象

但是在由于敲除绑定而创建的视图中,我得到第二组值,这两个值已经填充了两次。 (我在db中有两组值)

注意:如果我没有定义任何元数据,此代码正常工作。问题出在我使用元数据

的情况中

元数据

var sample=sample||{};sample.metadata=
{
    "dataServices":[
        {
            "serviceName":"/sample",
            "hasServerMetadata":true,
            "jsonResultsAdapter":"webApi_default",
            "useJsonp":false
        }
    ],
    "structuralTypes":[
        {
            "shortName":"Employee",
            "autoGeneratedKeyType":"None",
            "defaultResourceName":"Employee",
            "dataProperties":[
                {
                    "name":"id",
                    "dataType":"MongoObjectId",
                    "isNullable":false,
                    "defaultValue":"",
                    "isPartOfKey":true,
                    "validators":[
                        {
                            "name":"required"
                        }
                    ]
                },
                {
                    "name":"name",
                    "dataType":"String",
                    "maxLength":100,
                    "validators":[
                        {
                            "maxLength":100,
                            "name":"maxLength"
                        }
                    ]
                },
                {
                    "name":"age",
                    "dataType":"String",
                    "maxLength":100,
                    "validators":[
                        {
                            "maxLength":100,
                            "name":"maxLength"
                        }
                    ]
                }
            ]
        }
       ], 
    "resourceEntityTypeMap":{
        "Employee":"Employee"
    }
};

1 个答案:

答案 0 :(得分:2)

确保您拥有在模型中定义并通过电线连接的主键。如果将这些值保留为null,当breeze将它们添加到缓存并看到键是相同的时,它们将相互覆盖。