绑定到简单的字符串数组


69

如果我想将模板绑定到一个普通的旧字符串数组,我该在$ {??}表达式中放什么?

我希望这段代码不要太短,以免引起混淆:

<ul data-bind="template: { name: 'authorTemplate', foreach: authors }">
</ul>

作者在哪里 ["a", "b", "c"]

<script type="text/x-jquery-tmpl" id="authorTemplate">
    <li>${what_do_I_put_here???}</li>
</script>

我试过了:val value thisthis.toString()。最后两个显示了[object Object],所以我怀疑我离那儿很近。

Answers:


104

从文档中,答案是:

使用模板时: ${$data}

不使用模板时: $data


3
对$ data的解释或指向文档的链接可能会帮助Google。
2011年

我似乎找不到这个答案-我是从他们的Google网上论坛获得答案的。您是否有链接?
亚当·拉基斯

不害怕,但要假设它在jQuery模板文档中,否则就应该在hitoujs文档中(如果它特定于kickoutjs)。
2011年

5
foreach文档有一个相关的示例
Gene Golovchinsky,2012年

15
如果不使用模板,则应为<ul data-bind='foreach: array'><li data-bind='text: $data'>...
Greg Ogle,2012年

48

对于未命名的数组(JSON:[“ value1”,“ value2”]),它将为:

<ul data-bind="foreach: $root">
 <li data-bind="text: $data"></li>
</ul>

$ root关键字可以解决问题。


是的-上面的代码用于jQuery模板。在很久以前就放弃了,并使用了原生的剔除模板,这确实是怎么做的。
亚当·拉基斯

实际上,$root代表传递给的对象ko.applyBindings。因此,仅当您执行类似操作时,此方法才有效ko.applyBindings(["value1", "value2"], document.getElementById("MyValueList"));。如果你要在页面上的其他任何东西的结合,您将得到更好的服务有这个作为你的视图模型命名的成员,或者你可以写数组像这样绑定:foreach: ["value1", "value2"]。有关更多信息,请参见kickoutjs.com/documentation/binding-context.html
CptRobby
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.