如何使用ko.observable数组

时间:2013-01-23 09:55:59

标签: knockout.js

使用ko.obserbaleArrays时出现问题...

这是我的可观察数组

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

现在我想设置“isFavourtite” - 具有如下函数的Property:

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

        };

我现在不知道如何使用knockout.js设置此属性

感谢您的回答

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:1)

在makeFavorite函数中使用ko.utils api

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