首页 文章

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

提问于
浏览
1

我试图将嵌套的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>

这会在 'connected' div中显示 function () { [native code] }

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

我的模型是这样的:

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 回答

  • 1

    调用 .bind 会创建一个使用特定上下文和参数执行的新函数 . 所以, .bind 的结果是一个函数,然后你可以通过在它之后添加 () 来执行它 .

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

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

相关问题