Observable Array
The Observable Array wraps a JavaScript Array object and tracks changes in the Array.
var observableArray = new $.jqx.observableArray(array, callback)
var observableArray = new $.jqx.observableArray(
[{name: "Andrew Smith"},
{name: "Gordon Brown"}],
function(changes)
{
// handle changes here.
});
-
array: JavaScript Array object or JSON String used for creating the Observable Array.
-
callback: callback function which is called by the Observable Array when an Array Item is added, removed or updated. The function's parameter - changes contains the following list of parameters:
- name: The name of the property which was changed.
- object: The changed object after the change was made.
- type: A string indicating the type of change taking place. One of "add", "update", or "delete".
- oldValue: The value before the change.
- newValue: The value after the change.
- index: The changed array index.
- path: only for the "update" type. The path to the change property or sub property.
Settings
- length: Sets or returns the number of elements in an array.
- name: Returns "observableArray".
- changes: Returns an Array with all changes.
-
observe(): resumes the observe or changes the observe function if parameter is passed.
-
unobserve(): when the method is called the callback will no longer be called.
-
toArray(): returns JavaScript Array.
-
toJSON(): returns JSON string. The method has two optional parameters which are:
- keys: array of keys which will be included in the JSON.
- array: allows you to pass a sub array from the Observable Array instead of getting the JSON for the whole array.
- concat(): Joins two or more arrays, and returns an Observable Array which is a copy of the joined arrays.
- indexOf(): Search the array for an element and returns its position.
- join(): Joins all elements of an array into a string.
- lastIndexOf(): Search the array for an element, starting at the end, and returns its position.
- pop(): Removes the last element of an array, and returns that element.
- push(): Adds new elements to the end of an array, and returns the new length.
- reverse(): Reverses the order of the elements in an array.
- shift(): Removes the first element of an array, and returns that element.
- slice(): Selects a part of an array, and returns a new Observable Array.
- sort(): Sorts the elements of an array.
- splice(): Adds/Removes elements from an array and returns the removed item(s).
- unshift(): Adds new elements to the beginning of an array, and returns the new length.
- get(): Gets an item from the Array by a passed Index. Example: var firstItem = observableArray.get(0);
- set(): Updates an item or sub item in the Array or creates a new item if the passed index is higher than the Array's length. The method can be used for updaing a sub property by passing the path to the property.
Example:
var observableArray = new $.jqx.observableArray([{name: "Andrew Smith", age: 39}, {name: "Gordon Brown", age: 20}], function(changes)
{
});
observableArray.set("0.name", "Antoni Green");
Example:
$(document).ready(function () {
var array = generatedata(2);
var updateLog = function (observableArray) {
var rows = "";
for (var i = 0; i < observableArray.length; i++) { rows += observableArray.toJSON(["firstname", "lastname", "productname", "quantity", "price", "total"], observableArray[i]); } $("#log").html(rows); } var observableArray = new $.jqx.observableArray(array, function (changed) { updateLog(this); }); updateLog(observableArray); var source = { localdata: observableArray, datatype: "obserableArray", datafields: [ { name: 'firstname', type: 'string' }, { name: 'lastname', type: 'string' }, { name: 'productname', type: 'string' }, { name: 'quantity', type: 'number' }, { name: 'price', type: 'number' }, { name: 'total', type: 'number' } ] }; var dataAdapter = new $.jqx.dataAdapter(source); $("#jqxgrid").jqxGrid( { width: 850, height: 150, source: dataAdapter, sortable: true, columnsresize: true, editable: true, selectionmode: "multiplecellsadvanced", columns: [ { text: 'Name', datafield: 'firstname', width: 120 }, { text: 'Last Name', datafield: 'lastname', width: 120 }, { text: 'Product', datafield: 'productname', width: 180 }, { text: 'Quantity', datafield: 'quantity', width: 80, cellsalign: 'right' }, { text: 'Unit Price', datafield: 'price', width: 90, cellsalign: 'right', cellsformat: 'c2' }, { text: 'Total', datafield: 'total', cellsalign: 'right', cellsformat: 'c2' } ] }); $("#addItem").jqxButton(); $("#deleteItem").jqxButton(); $("#updateItem").jqxButton(); $("#updatePath").jqxButton(); $("#addItem").click(function () { var row = generatedata(1)[0]; observableArray.push(row); }); $("#deleteItem").click(function () { if (observableArray.length> 0) {
observableArray.splice(0, 1);
}
});
$("#updatePath").click(function () {
if (observableArray.length> 0) {
var row = generatedata(1)[0];
observableArray.set("0.firstname", row.firstname);
observableArray.set("0.lastname", row.lastname);
}
});
$("#updateItem").click(function () {
if (observableArray.length> 0) {
var row = generatedata(1)[0];
observableArray.set(0, row);
}
});
});