淘汰数据与“with”或foreach绑定?

时间:2013-04-02 05:36:50

标签: knockout.js knockout-templating

我对Knockout很新,并试图探索它。我知道如何使用foreach但是对“with”感到困惑。我刚刚浏览了针对With的敲除文件(http://knockoutjs.com/documentation/with-binding.html)。还是喜欢:

1)我何时应该使用“with”

2)有替代foreach吗?

3)“with”和foreach

之间有什么区别

感谢Advace

1 个答案:

答案 0 :(得分:2)

1) with 是一个内联模板绑定,当你想在子ViewModel为null时隐藏一个区域时常用它,当你想要改变它时,它也是一个很好的做法。从父模型到子模型的上下文。

2)不是, 适用于任何对象。如果你的数组可以为null,则 是好的(如果 foreach 绑定与空值一起使用,我无法记住这一点)

3)是的,他们完全不同。 使用如果您希望将 with 与数组一起使用,则不提供阵列foreach模板功能,那么您需要在中使用 foreach 绑定以

另外看看我的约会配置库,它消除了所有关于绑定的麻烦,这里是示例

https://github.com/AndersMalmgren/Knockout.BindingConventions/wiki/With-convention

编辑:我的库使用绑定抽象,上面的Github链接中的示例看起来像没有我的约定库

<select data-bind="options: items, value: selectedItem, optionsText: 'name', optionsCaption: 'Select...'"></select>

<div data-bind="with: selectedItem">
    <span data-bind="text: name"></span>
</div>