Knockout Observable Array(監控陣列)
Observable Array(監控陣列)的作用
列表操作是經常會遇到的一個場景,使用監控陣列,你可以:
- 儲存列表物件,並且使用Ko提供的豐富的API操作列表元素(支援內建js
Array
的方法,以及ko自己新增的方法:remove
,removeAll
等) - 監控陣列元素個數的變化,並且自動通知外部。如果與UI繫結,則自動更新UI
Observable Array
與js內建Array
區別
Observable Array是ko物件,內部包裝了Array物件,而後者僅僅是一個Array物件 。
前者可以跟蹤陣列個數變化,後者不能
前者可以使用js內建陣列物件的方法+ko擴充套件的API來運算元據,後者只能使用js內建陣列物件提供的方法運算元據
Observable Array注意事項
這裡需要單獨提示一點對Observable Array理解可能出現偏差的地方:
Observable Array**不監控元素本身的變化**:Observable Array只處理元素個數的變化,比如陣列元素刪除和新增。元素自身的變化是否能自動監控,取決於元素本身是普通物件還是Observable
物件。
如何既監控陣列元素個數,又監控元素內容變化:往陣列中push元素的時候,使用observable
元素即可,則該元素可以自動監控自身的變化。
例項講解:Observable Array
基本語法
1、定義
var myObservableArray = ko.observableArray(); //建立一個監控陣列
myObservableArray.push('Some value'); //使用push方法新增陣列元素
var anotherObservableArray = ko.observableArray([
{ name: "Bungle", type: "Bear" },
{ name: "George", type: "Hippo" },
{ name: "Zippy", type: "Unknown" }
]);//可以在建立監控陣列的同時初始化陣列
2、讀取
alert('The length of the array is ' + myObservableArray().length);//使用()號讀取陣列元素,然後就可以隨意操作JS Array物件的屬性
alert('The first element is ' + myObservableArray()[0]);//讀取第一個元素
3、寫入
var a =ko.observableArray(['1','2'])//初始化的時候寫入值
a(['3','4']);//使用(value)方式重新寫入資料,現在a()=['3','4']
4、訂閱陣列元素個數變化事件
var myObservableArray = ko.observableArray();
myObservableArray.subscribe(function (newVal) {
alert(newVal.length);
alert(newVal[0]);
});//訂閱陣列元素變化事件,newVal將會傳入變化後的陣列物件
myObservableArray.push('1');//push一個新元素進去,會alert一個長度,和'1'
5、ko擴充套件的陣列API
var myObservableArray = ko.observableArray(["item1", "item2", "item3", "item4", "item5", "item6", "7", "8"]); //構建監控陣列
myObservableArray.remove("item1");//移除item1
myObservableArray.remove(function (item) {
return item.length < 4;//只有長度小於4的元素被移除
});//移除 "7", "8"
myObservableArray.removeAll(["item2", "item3"]);//移除item2,item3
myObservableArray.removeAll();//移除所有的
相關文章
- Array陣列陣列
- JavaScript Array 陣列JavaScript陣列
- day05陣列array陣列
- 內建物件--Array(陣列)物件陣列
- JavaScript刪除array陣列元素JavaScript陣列
- LeetCode Shuffle an Array(打亂陣列)LeetCode陣列
- TPU &“脈動陣列”(systolic array)陣列
- 瞭解下C# 陣列(Array)C#陣列
- linux Shell 命令列-03-array Shell 陣列Linux命令列陣列
- Array.apply生成陣列小結APP陣列
- Go 基礎教程--6 陣列 ArrayGo陣列
- Go 基礎教程--5 陣列 ArrayGo陣列
- 雙陣列字典樹(Double Array Trie)陣列
- PHP陣列函式-array_mapPHP陣列函式
- JS陣列Array的全部方法彙總JS陣列
- Array · 刪除陣列中指定的元素陣列
- 開源運維軟體 WGCLOUD 可以監控磁碟陣列嗎運維GCCloud陣列
- javascript 陣列(array) 常用的方法集錦(上)JavaScript陣列
- 二維陣列排序函式array_multisort()陣列排序函式
- Array · 判斷某元素是否在陣列中陣列
- JavaScript 中的陣列分組:array.groupBy()JavaScript陣列
- Python 列表 list 陣列 array 常用操作集錦Python陣列
- 磁硬碟陣列後如何檢測和監控硬碟健康狀況?硬碟陣列
- js--陣列的 Array.of() 和 Array.from() 方法的使用總結JS陣列
- jQuery遍歷array陣列元素程式碼例項jQuery陣列
- Ruby 札記 - Ruby 集合家族之陣列(Array)陣列
- JavaScript中陣列Array.sort()排序方法詳解JavaScript陣列排序
- 資料結構與演算法 | 陣列(Array)資料結構演算法陣列
- PHP中array_chunk() 函式如何分割陣列PHP函式陣列
- 圖解:什麼是旋轉陣列(Rotate Array)?圖解陣列
- Laravel-Horizon【佇列監控】Laravel佇列
- 如何監聽陣列變化?陣列
- array_merge和+號合併陣列的區別陣列
- 雙陣列TRIE樹Double-Array Trie理解引導陣列
- array_multisort 第二個陣列沒有正確排序陣列排序
- 9012 年了,Array 陣列的方法趕緊用起來!陣列
- 9102年了,Array陣列的方法趕緊用起來!陣列
- JS中使用new Array()與使用Array.from()方式建立二維陣列的效能比較JS陣列