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>

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

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

我的模型是这样的:

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 版本

4

1 回答 1

1

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

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

data-bind="text: $root.checkNetwork('something')"
于 2013-08-22T13:00:49.737 回答