Javascript 如何使用KnockoutJS在foreach循环中指定不同的click绑定
我有一个击倒可观察数组的形式:Javascript 如何使用KnockoutJS在foreach循环中指定不同的click绑定,javascript,knockout.js,Javascript,Knockout.js,我有一个击倒可观察数组的形式: this.controls = ko.observableArray([ { name: 'Previous', action: '$root.previous' }, { name: 'Next' , action: '$root.next' }, {
this.controls = ko.observableArray([
{
name: 'Previous',
action: '$root.previous'
},
{
name: 'Next' ,
action: '$root.next'
},
{
name: 'Save',
action: '$root.save'
}
]);
在我看来,我想做以下几点:
<div class="controls navigation">
<ul data-bind="foreach: $root.controls">
<li>
<span data-bind="text: name, click: action"></span>
</li>
</ul>
</div>
-
该视图创建了三个独立的跨度,它们基本上是按钮。我的目标是让viewmodel中的相应操作在用户每次单击特定范围时调用
然而,这是行不通的
我如何在数组中循环并为每个项目指定不同的单击绑定操作
我可以很容易地写出每个跨度个体(在这个特定的例子中,因为数组中只有3个项目),但我很好奇如何使用数组来实现这一点。也许您可以这样重构它
this.controls = ko.observableArray([
{
name: 'Previous'
},
{
name: 'Next'
},
{
name: 'Save'
}
]);
this.myAction = function (value, event) {
if(value == 'Previous')
{
// do stuff
}
else if(value == 'Next')
{
// do stuff
}
else if(value == 'Save')
{
// do stuff
}
return true;
}
然后
-
你非常接近。假设有如下定义的“上一个”、“下一个”和“保存”
this.previous = function() { ... };
self = this;
假设你这样定义自己
this.previous = function() { ... };
self = this;
然后,您只需按如下方式更新阵列:
this.controls = ko.observableArray([
{
name: 'Previous',
action: self.previous
},
{
name: 'Next',
action: self.next
},
{
name: 'Save',
action: self.save
}
]);
请注意,action如何不再是字符串,而是对函数的引用
是的!成功了。我之前也尝试过类似的方法(但是我没有使用
self
,而是在ObservalArray函数中使用了this
。感谢您的帮助!!!