如何在按钮的单击功能中获取绑定的可观察内容?

时间:2015-03-16 15:48:06

标签: knockout.js

我在这里遇到了一个棘手的案例,但是为了让每个人都能更简单地理解,让我解释一下我的情景。

我在循环中有两个按钮,各个绑定text:name1text: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

对此有任何帮助或想法都会很棒。

1 个答案:

答案 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());
}

这是modified version of your fiddle.