击倒阵列

时间:2012-08-08 18:32:16

标签: knockout.js knockout-2.0

我有两个Knockout选择的社交网络和List_2所有这个列表可以包含一个社交网络(twitter或facebook)或两者(twitter和facebook)

<script id="socNetchoiceTmpl" type="text/html">         
 <ul data-bind="foreach: socialNetworksList, visible: socialNetworksList().length > 0">
     <li>
        <input type="checkbox" data-bind="value: $data, checked:  
            $parent.selectedSocialNetworks" /><span data-bind="text: $data"/>
    </li>
 </ul>

  function SocialNetChoicesViewModel() {
    var self = this;
    self.socialNetworksList = ko.observableArray([]);
    self.selectedSocialNetworks = ko.observableArray([]);
    self.List_2 = ko.observableArray([]);        

    self.save = function () {
      if(....){
            $.ajax("/Home/SocialNetworksChoice", {
              data: ko.toJSON({ selectedSocialNetworks: self.selectedSocialNetworks }),
              type: "post", contentType: "application/json",
              success: function (result) {
                if (result.Success) {
                    //alert(result.Message);
                }
                else {
                    alert(result.Message);
                }
              }
            });
       }
       else{
          $.ajax("/Home/Authentification", {
              data: ko.toJSON({ socialNetworks: self.List_2 }),
              type: "post", contentType: "application/json",
              success: function (result) {
                if (result.Success) {
                    //alert(result.Message);
                }
                else {
                    alert(result.Message);
                }
              }
            });
       }
    };
    // Load initial state from server, convert it to Task instances,
    // then populate self.tasks
    $.getJSON("/Home/SocialNetworksChoice", function (allData) {
        var mappedItems = $.map(allData, function (item) { return item });
        self.socialNetworksList(mappedItems);
    });

    $.getJSON("/Home/Authentification", function (allData) {
        var mappedItems = $.map(allData, function (item) { return item });
        self.List_2(mappedItems);
    });
 };

我想检测我的List_2及其在selectedSocialNetworks中的社交网络不包含的愿望

我使用if而不是检测List_2 = selectedSocialNetworks是否执行指令...

我很抱歉我的英语不好,

感谢,

1 个答案:

答案 0 :(得分:0)

你可能做的最好的事情是创建一个ko.computed函数,它将返回一个带有你想要的输出的新数组。然后,您可以绑定计算的。

你可以自己做循环逻辑并输出一个新数组,或者如果你很懒,你可以使用underscore.js(_),如果我没记错,有很多很好的函数可以自动为你做数组