在我的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循环中引用回到水果?
答案 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