【问题标题】:knockoutjs: binding to an observable property outside of an array, in a templateknockoutjs:在模板中绑定到数组外部的可观察属性
【发布时间】:2011-11-09 21:51:16
【问题描述】:

我正在尝试将模板的一部分绑定到我的数据模型根上的属性,同时从可观察数组构建模板。

这个 jsfiddle:http://jsfiddle.net/mgxyE/2/ 简洁地说明了我想要完成的工作。

span <span data-bind='text: message'></span> 是失败的原因,因为我不知道如何在模板中设置该绑定。有什么帮助吗?

【问题讨论】:

    标签: javascript data-binding knockout.js


    【解决方案1】:

    如果您的视图模型具有全局范围,那么您只需执行以下操作:

    <span data-bind='text: model.message'></span>
    

    在您的小提琴中,您可能希望将选项从 onLoad 更改为 no wrap (body),以了解 JavaScript 的加载方式。

    另一个选项是通过templateOptions 传递值。这看起来像:

    <div data-bind='template: {name :"nodeTemplate", foreach: nodes, templateOptions: { myMessage: message} }'></div>
    

    然后,像绑定到它(你可以称之为消息,只是使用myMessage 来显示名称的来源):

    <span data-bind='text: $item.myMessage'></span>
    

    最后,如果你使用我推荐的KO 1.3 beta,那么你可以简单地这样做:

    <span data-bind='text: $root.message'></span>
    

    【讨论】:

    • 我认为 templateOptions 路由是最恰当的做法。
    • 我认为在 1.3 中,使用 $root$parent 可能是最受欢迎的选择。
    • 完美!现在使用 $root 但模板选项对于更复杂的模板来说似乎是一个很好的解决方案。谢谢!
    • 如果使用 1.3,$root 是要走的路。否则我会推荐使用 templateOptions。
    【解决方案2】:

    使用 Knockout JS 1.3,您可以使用父绑定上下文:

    http://jsfiddle.net/Afx6d/

    【讨论】:

      猜你喜欢
      • 2011-06-13
      • 1970-01-01
      • 2017-11-25
      • 2015-11-30
      • 2014-10-01
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多