Knockout.js 如何在foreach数据绑定中获取对ViewModel的引用?

Knockout.js 如何在foreach数据绑定中获取对ViewModel的引用?,knockout.js,Knockout.js,在我的ViewModel中,我有一个可观察的数组,该数组中的一个元素可以是选定的元素: var ViewModel = function () { // the array this.fruits = ko.observableArray([{ name: "apple" }, { name: "orange" }, { name: "banana" }]); // the selected element this.selectedFruit = null; };

在我的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中选定的水果。击倒JS的方法是什么?如何创建一个函数来引用foreach循环中的结果?

您需要返回父级以执行该方法,因为您当前的作用域位于水果数组中。代码如下所示:

<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
}

this.fruitWasClicked=函数(水果){ //在这里做点什么 }
下面是一些进一步解释上下文的文档

谢谢,这很有帮助。这是一把小提琴,它是在这里实现的: