javascript - Breeze 和 knockout 未正确绑定(bind)

标签 javascript binding knockout.js breeze knockout-2.0

我正在尝试使用 Breeze 和 knockout 的示例

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

中获取两个对象

但是在由于 knockout 绑定(bind)而创建的 View 中,我得到了第二组值填充两次。 (我在数据库中有两组值)

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

元数据

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"
    }
};

最佳答案

确保您有一个在模型中定义并通过网络传递的主键。如果将这些值保留为空,当 Breeze 将它们添加到缓存并看到键相同时,它们将相互覆盖。

关于javascript - Breeze 和 knockout 未正确绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19314825/

相关文章:

javascript - 如何使用基本 KO 可观察数组来更新绑定(bind)到选择选项下拉列表的多个计算可观察数组

javascript - jQuery Slide Down 使用 slice 显示更多内容

javascript - 点击图片时点击事件不冒泡

带有上下文菜单的 WPF 按钮,如何将上下文菜单宽度绑定(bind)到按钮的宽度?

c - C 代码的输出,例如通过引用调用

javascript - Javascript : Nested Return Statement, return inside Return

javascript - Angular animate 的 classNameFilter 与 Angular-bootstrap

javascript - AngularJS ngmodel 绑定(bind)说明?

java - 包含 List 的 Spring 绑定(bind)映射

asp.net-mvc - 如何将客户端生成的类列表获取到 MVC 后操作参数?