如何在foreach数据绑定中引用ViewModel?

时间:2015-06-05 12:53:17

标签: knockout.js

在我的ViewModel中,我有一个可观察的数组,这个数组的一个元素可以是选中的元素:

var ViewModel = function () {

// the array
this.fruits = ko.observableArray([{
    name: "apple"
}, {
    name: "orange"
}, {
    name: "banana"
}]);

// the selected element
this.selectedFruit = null;

};

ko.applyBindings(new ViewModel());

现在我在列表中显示元素:

<div data-bind="foreach: fruits">
<ul>
    <li href="" data-bind="text: name "></li>
</ul>

现在我希望点击一个项目可以在我的ViewModel中选择所选的水果。什么是KnockoutJS方式?如何使函数在foreach循环中引用回到水果?

1 个答案:

答案 0 :(得分:1)

您需要返回父级才能执行该方法,因为您当前的范围在fruit数组中。代码如下所示:

<div data-bind="foreach: fruits">
<ul>
    <li href="" data-bind="text: name, click: $parent.fruitWasClicked"></li>
</ul>
</div>


this.fruitWasClicked = function(fruit){
//do something here
}

以下是一些进一步解释上下文的文档 http://knockoutjs.com/documentation/binding-context.html