2015-01-09 79 views
0

我創建了一個js函數,用於切換對象(位於數組中)的屬性的布爾值。總結我想要做的事情,我有2個列表。如果布爾屬性爲false,則另一個列表將顯示一個項目(因此爲切換功能)雙擊事件後敲除綁定

我的問題是當我將切換功能綁定到雙擊事件(觸發器正確,通過調試器驗證)我似乎無法得到綁定正確(或可能是其另一個問題完全)如果我手動將切換功能與硬編碼的「Id」值(確定數組中的哪一項待綁定)綁定能夠正常工作,並且該項目出現在第二個列表中。

var TestNWJS = TestNWJS || {}; 

TestNWJS.QualificationList = (function() { 

    //private functions 
    function CreateQualificationModel(allCredentialsList) { 
     TetsNWJS.QualificationList.ViewModel = {}; 
     TestNWJS.QualificationList.ViewModel.AllCredentials = ko.observableArray(allCredentialsList); 

    } 
    function toggleselected(allCredentialsList, id) { 

     var credential = ko.utils.arrayFirst(allCredentialsList, function (credential) { 
      var stringToInt = parseInt(id); 
      return credential.Id === stringToInt; 
     }); 

     if (credential.Selected == false) { 
      credential.Selected = true; 
     } 
     else { 
      credential.Selected = false; 
     } 

     return credential; 
    } 

    //public function 
    return { 
     Init: function (allCredentialsList) { 

      CreateQualificationModel(allCredentialsList); 
      toggleselected(allCredentialsList, 51); // THIS IS THE HARDCODED TEST, IT WORKS 


      //THIS IS WHAT I WANT TO WORK CORRECTLY: 
      $("#allCredentials").live('dblclick', function (e) { 
       toggleselected(allCredentialsList, this.value); 
      }); 

      ko.applyBindings(TetsNWJS.QualificationList.ViewModel); 


     } 
    } 

})(); 
+0

你可以把這個在小提琴明白了什麼是不工作?你也試圖從視圖模型中添加它,但我會建議創建一個快速自定義綁定處理程序來執行此操作。你還使用哪個版本的jQuery? – 2015-01-09 19:38:11

回答

0

只是爲了測試這一點,我做了一個小提琴以下 -

http://jsfiddle.net/pwkad/uend52s5/

$("#container").on('dblclick', function (e) { 
    console.log('double clicked it'); 
}); 

通過現場切換到它的最新版本的jQuery

0

如何爲我工作你在測試你的代碼嗎?看看你發佈的代碼,看起來像Selected property的值正在以正確的方式改變。但是,這不是可觀察的,所以你沒有在屏幕上反映出結果。

嘗試創建每個憑證類,以及觀察到的 '選擇' 屬性:

function Credential(id, selected) 
{ 
    this.id = id; 
    this.selected = ko.observable(selected); 
} 

TestNWJS.QualificationList.ViewModel.AllCredentials = ko.observableArray(allCredentialsList.map(function(item){ return new Credential(item.id, item.selected);})); 

更新

這是一個用一個簡單的例子codepen。有一個包含對象列表的視圖模型,每個對象都有一個可觀察的屬性。這裏是過濾僅所選項目第二計算性能:

http://codepen.io/adilsonjr/pen/yygxbg

+0

這將在我的viewmodel內? – John 2015-01-09 20:03:37

+0

是的。它應該在你的視圖模型中。 – 2015-01-11 00:49:35