【问题标题】:knockout data binding with "with" or foreach?用“with”或foreach 敲除数据绑定?
【发布时间】:2013-04-02 05:36:49
【问题描述】:

我对 Knockout 非常陌生,并正在尝试探索它。我知道如何使用 foreach 但对“与”感到困惑。我刚刚浏览了 With 的淘汰 (http://knockoutjs.com/documentation/with-binding.html) 文档。还是喜欢:

1) 我什么时候应该用"with"

2) with 是 foreach 的替代品吗?

3) "with" 和 foreach 有什么区别

提前致谢

【问题讨论】:

    标签: knockout.js knockout-templating


    【解决方案1】:

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

    2) 并非如此,with 适用于任何对象。如果您的数组可以为空,那么 with 很好(我不记得如果 foreach 绑定适用于空值)

    3) 是的,它们完全不同。 With 不提供数组 foreach 模板功能如果您想将 with 与数组一起使用,那么您需要在 中使用 foreach 绑定与

    还可以看看我的 Convention over configuration library,它消除了所有关于绑定的麻烦,这里有一个 with 示例

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

    编辑:我的库抽象了 with 绑定,上面 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>
    

    【讨论】:

    • 你能举个例子吗?在您的 Github 链接中,我看不到“with”示例
    • 仅下载后我发现 runner.html 其余所有文件都是 js。我不明白 runner.html
    • 你只需要src下的文件,runner.html只是一个运行单元测试的文件。包括 src 文件,然后是你的集合,你可以使用 Github wiki 下的示例来帮助你开始
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 2013-06-08
    • 2011-08-13
    • 2012-04-11
    • 2012-06-09
    • 2012-06-06
    • 1970-01-01
    相关资源
    最近更新 更多