Reputation: 89
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
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
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