我在这里遇到了一个棘手的案例,但是为了让每个人都能更简单地理解,让我解释一下我的情景。
我在循环中有两个按钮,各个绑定text:name1
和text:name2
都有点击绑定。
视图模型:
var viewModel = function(){
var self=this;
self.arr=ko.observableArray([1]);
self.name1=ko.observable("click1");
self.name2=ko.observable("click2");
self.clickme=function(){
console.log(this)
// this.name1('yoo') this.name1 or name2 should be dynamic based on btn click
//Here how to access the observanle binded to 'text' for the clicked button
}
}
ko.applyBindings(new viewModel());
当点击一个按钮时,有什么方法我可以在我的点击功能中获得点击按钮text binded observable
,如果按钮1点击我需要name1
我的功能。
我尝试将$element
,$context
作为参数传递给VM的函数但是没有解决它。
演示小提琴 here
对此有任何帮助或想法都会很棒。
答案 0 :(得分:3)
将它们传递给函数。
<div data-bind="foreach:arr">
<button data-bind="text:$root.name1,click:function(){$root.clickme($root.name1)}"></button>
<button data-bind="text:$root.name2,click:function(){$root.clickme($root.name2)}"></button>
</div>
然后在视图模型中处理它们,如下所示:
self.clickme = function (val) {
alert(val());
}