Greg
Greg

Reputation: 89

How to use ko.observable Arrays

I have a problem using ko.obserbaleArrays...

this is my observable Array

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

Now I want to set the "isFavourtite"- Property with a function looking like this:

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

        };

I don't really now how to set this property with knockout.js

Thank you for your answers

Upvotes: 0

Views: 140

Answers (2)

Artem Vyshniakov
Artem Vyshniakov

Reputation: 16465

You could do the following:

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

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

But if you want to the values updated in UI you have to make projectName and isFavourite observable. Here is an example: http://jsfiddle.net/vyshniakov/UdsDf/

Upvotes: 2

Ray
Ray

Reputation: 4108

Use ko.utils api inside of makeFavorite function

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

Upvotes: 1

Related Questions