2013-01-23 64 views
0

我有使用ko.obserbaleArrays一個問題...如何使用ko.observable陣列

這是我觀察到的陣列

self.favoriten = ko.observableArray([ 
       { 
        projectName: "Favorit1", isFavourite: false 
       }, 
       { 
        projectName: "Favorit2", isFavourite: true 
       }, 
       { 
        projectName: "Favorit3", isFavourite: false 
       } 
       ]); 

現在我想將「isFavourtite」 - 物業用功能看起來像這樣:

self.makeFavourite = function (projectName, data, event) { 
     //Some Code 

     }; 

我真的不現在如何設置這個屬性knockout.js

謝謝你的答案

回答

2

你可以做到以下幾點:

self.makeFavourite = function (projectName, data, event) { 
     var favorite = ko.utils.arrayFirst(self.favoriten(), function(item){ 
      return item.projectName == projectName; 
     }) 

     if (favorite){ 
      favorite.isFavourite = data; 
     } 
    }; 

但是,如果你想在UI更新的值,你必須做出PROJECTNAME和isFavourite觀測。這裏有一個例子:http://jsfiddle.net/vyshniakov/UdsDf/

+0

,這使得它的最愛,但不知何故observableArray不updatet! 含義:我根據是否喜歡顯示圖片,但圖片狀態未更新 – Greg

+0

從文檔:「關鍵點:一個observableArray跟蹤數組中的哪些對象,而不是這些對象的狀態」 - 這意味着你將不得不使自己的數組項可見。 –

+0

isFavorite字段應該是自動UI更新的可觀察值。 –

1

使用ko.utils API makeFavorite函數內

var item = ko.utils.arrayFirst(this.favoriten(), function(item) { 
      return ko.utils.stringStartsWith(item.projectName, projectName); 
     }); 
if (item) 
    item.isFavorite = true;