【问题标题】:How do I bind the column with the property?如何将列与属性绑定?
【发布时间】:2013-08-12 21:20:25
【问题描述】:

我正在尝试连接 slickgridbreeze.js,但遇到了问题。

breeze为你生成js模型,对象属性有get和set方法,如:

var p1 = myobj.property1();
var p2 = myobj.property2();

myobj.property1("Test");

但在slickgrid列模型中,如何将列与属性绑定?

columns : [
        {
            id: "id",
            name: "ID",
            field: "property1"  //this way I only see for every row on the page the text "function..."
        },
        {
            id: "prop2", name: "prop2", field: "property2"
        }
        ]

【问题讨论】:

    标签: breeze slickgrid


    【解决方案1】:

    尝试使用轻而易举的“backingStore”适配器而不是默认的“ko”(敲除)适配器。

    这只需要靠近文件顶部的一行 Breeze 配置

     breeze.config.initializeAdapterInstance("modelLibrary", "backingStore", true);
    

    backingStore 适配器为您的模型创建 ES5 道具,而不是“淘汰”属性。我猜这些对于 slickgrid 来说会更容易绑定。

    【讨论】:

    • 是的,成功了!但我有一个问题,更改适配器对我现有的淘汰赛视图有一些副作用吗?根据stackoverflow.com/questions/16367365/…,此更改是否适用于 IE 8?
    • Breeze 'backingStore' 适配器仅适用于支持 ES5 的浏览器,即 IE9 及更高版本。淘汰适配器通过 ES5 shim 与旧版浏览器一起工作。 Breeze 目前仅支持每个应用程序使用一个模型库适配器,而且拥有多个适配器可能不是一个好主意。如果您需要坚持使用 ko 但需要打开 ko'd 实体的另一种可能性,请查看 knockout 的 'toJS' 方法。
    • 真的谢谢你!另一个初学者的问题,使用 ko.toJS 会打破实体跟踪吗?如果是这样,那将打破更新 slickgrid 中的数据和轻松保存对实体的更改之间的魔力。我来自 silverlight mvvm ria 服务世界,您在 domaincontext 中加载数据,在数据网格上显示它,更改数据,然后 domaincontext.submit 将修改后的实体发送到服务器。 Breeze knockout 和 slickgrid 是我目前在 html javascript 世界中发现的更接近的技术
    • 个人偏见...,但为了简单起见,我会通过 backingStore 适配器使用 Angular。您的 slickgrid 应该像您期望的那样工作,并且 Angular 的 mvvm 架构应该适用于任何其他控件。但是......我真的不知道你在操作什么限制。
    • 你好@Jay,我听从你的建议,我正在尝试使用 mvvm 架构的 Breeze、Angular 和 SlickGrid,但是当我使用 $scope 加载和绑定数据时似乎出现了问题。 $apply(),我得到: RangeError: Maximum call stack size exceeded,在谷歌中那个错误,看起来像角度试图克隆视图上的数据,但它对于微风对象失败。 wijgrid link 也会出现这个问题。所以你怎么看?谢谢
    猜你喜欢
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 2018-09-10
    • 2013-05-17
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 2017-05-26
    相关资源
    最近更新 更多