Skip to content Skip to sidebar Skip to footer

Knockout Js, Add New Item To An Array

So this follows on from my previous question: knockout js, add additional elements to an array Basically I have an app where a user fills in certain data, clicks next and this is a

Solution 1:

Knockout observable arrays have equivalent functions to native JavaScript arrays. See: http://knockoutjs.com/documentation/observableArrays.html

So you need just to use arr.pop(item) or arr.push(item).

In case you need to replace all items and want to avoid multiple events to raise, use observableArray.valueWillMutate() and valueHasMutated() functions. See sample where I do swap the entire array:

ko.observableArray.fn.replaceWith = function (valuesToPush) {
		// NOTE: base on - ko.observableArray.fn.pushAll
		var underlyingArray = this();
		var oldItemcount = underlyingArray.length;

		this.valueWillMutate();

		// adding new items to obs. array
		ko.utils.arrayPushAll(underlyingArray, valuesToPush);

		// removing old items (using KO observablearray fnc.)
		if (oldItemcount > 0)
			this.removeAll(underlyingArray.slice(0, oldItemcount));

		this.valueHasMutated();

		return this;  //optional
	};

Post a Comment for "Knockout Js, Add New Item To An Array"