knockoutjs在嵌套的foreach绑定中传递参数

时间:2013-08-22 11:57:05

标签: knockout.js

我正在尝试将嵌套的foreach循环中的外部对象的属性传递给函数。 这将是下面代码中的'something',但我甚至无法使用硬编码字符串:

<div data-bind="foreach: supportedNetworks">  

       <div  data-bind="text: $data"></div>

       <div class="span3 social_connect text-right">

       <div data-bind="with: $root.Selected">
           <div data-bind="foreach: networks">          
                 <div id='connected' data-bind="text: $root.checkNetwork.bind($data,'something')">
                </div>

           </div>
       </div>
</div>

这会在function () { [native code] } div

中显示'connected'

我的最终目标是显示网络列表并预先显示其中一个网络,通过与其网络列表进行比较并显示相应的消息来检查当前用户是否已连接。

我的模型是这样的:

function viewModel() {

        var self = this;         

        self.supportedNetworks = ['facebook', 'twitter', 'google'];   

        self.checkNetwork = function (name) {
            console.log(name); 
            // Display connected or Not connected          
        };                      

        ....
  };

所选对象是具有以下类型的网络的用户对象:

function SocialNetwork(item) {
    var self=this;

    self.Id = ko.observable(item.Id),
    self.Name = ko.observable(item.Name)   
};

我是否亲近?顺便说一句,如果重要的话,我正在使用2.3.0版本

1 个答案:

答案 0 :(得分:1)

调用.bind创建一个使用特定上下文和参数执行的新函数。因此,.bind的结果是一个函数,然后您可以通过在其后添加()来执行该函数。

但是,在这种情况下(使用text绑定)看起来你想要函数调用的输出,所以你可以将它简化为:

data-bind="text: $root.checkNetwork('something')"