我是Knockout.js的新手,我认为只需要找到正确的语法。
我想使用foreach
绑定的循环变量来创建组件。像这样:
<ul data-bind="foreach: packages">
<li>
<my-widget params='package'></my-widget>
<!-- I have tried but dont' work:
<my-widget params='this'></my-widget>
<my-widget params='$parent'></my-widget>
<my-widget params='$parenteContext'></my-widget>
-->
</li>
</ul>
有简单的方法吗? with
绑定可以有用吗?
这是一个简单的jsfiddle来演示它: http://jsfiddle.net/n194o9dp/3/
我希望看到重复的ul列表:
答案 0 :(得分:1)
我认为您正在寻找包含正在迭代的当前数据项的$data
。
可以在docs for bindingContext properties
中找到更多信息编辑:所以你的params
混乱了。就像绑定一样,你需要传递它property:value
- 所以如果你想传递它你可以做的整个外部对象:
<my-widget params='data:$data'></my-widget>
data
唯一的区别是您在小部件中访问它的方式。此外,<my-widget params='foo:$data'></my-widget>
表示绑定上下文,用于访问您需要使用属性$data
的实际数据,这会很快造成混淆。总而言之,如果您这样做,它将起作用:
data
然后在小部件内:
<my-widget params='data:$data'></my-widget>
http://jsfiddle.net/n194o9dp/5/
在我看来,更好的选择是将您实际需要的内容传递给您的小部件:
....
viewModel: function(params) {
this.name = params.data.name
},
....
直接访问它:
<my-widget params='name:name'></my-widget>
答案 1 :(得分:0)
您可以使用组件绑定
<ul data-bind="foreach: {data: packages, as:package}">
<li>
<div data-bind='component: {
name: "my-widget",
params: { package: package }
}'></div>
</li>
</ul>
有关组件绑定的更多信息是here。