如何在Breeze和Durandal中使用Knockout-ES5插件

时间:2013-06-27 16:42:05

标签: knockout.js breeze durandal knockout-es5-plugin

如何在Breeze和Durandaljs中使用史蒂夫的Knockout-ES5-Plugin(http://blog.stevensanderson.com/2013/05/20/knockout-es5-a-plugin-to-simplify-your-syntax/)?

非常感谢!

2 个答案:

答案 0 :(得分:3)

对于Durandal,你可以挂钩到视图模型binder的beforeBind钩子,自动让Steve的插件在绑定之前转换你的对象。这可能无法完美运作,我自己没有尝试过。另外,请记住,他的插件不会转换完整的对象图,只会转换对象的基本属性。因此,以这种方式绑定可能不会100%正常工作。

Durandal 2.0拥有自己的ES5插件,可以正常工作:)它还没有发布,但如果你想生活在边缘,那么它与2.0的其余部分一起使用。发布定于8月中旬。

关于微风,我不确定。

答案 1 :(得分:3)

this post的选定答案采用以下方法:

  • 使用Breeze内置的BackingStore modelLibrary(取而代之的是Knockout modelLibrary)
  • 当用户表示他们想要编辑记录时,通过有效地调用ko.track(entity._backingStore),使用ES5插件“按需”使实体可观察。

这样做的好处是,对于很长的实体列表来说,更轻更多更轻,直到需要它们才能使它们可观察。 ES5插件增加了以下好处:HTML中的绑定不需要在不可观察的实体和可观察的实体之间进行更改(因为括号不是必需的)。

如果您在默认情况下要求所有实体都是“ES5”可观察的,那么您可能最好编写自定义的modelLibrary适配器 - 查看Breeze调试文件(或源代码)以查看三个内置适配器: <{1}},backingStorebackbone为例。