一择葡、setData()方法:
1、參數(shù)接受一個對象剃氧,以key敏储,value的形式表示;
2朋鞍、參數(shù)和變量名稱一致已添,可用一個值代替(es6新語法特性)
3、可以設置一個或多個data數(shù)據(jù).
this.setData({
list:'change data',
info:'change data'
})
4番舆、key可以以數(shù)據(jù)路徑的形式給出(路徑形式的key必須帶引號)(經(jīng)小程序更新后酝碳,現(xiàn)已支持不加引號的寫法)
this.setData({
'list[0].title' : 'change data', //數(shù)據(jù)路徑key必須帶''號
'list[0].num' : 'change data' //數(shù)據(jù)路徑key必須帶''號
})
5、key值可以為變量恨狈,為變量的時候要用[ ]引起來
page({
data:{
todos:[{id:0,text:'abc',isDelete:false}]
},
change(e){
var index = e.currentTarget.dataset.id;
var deletedtodo='todos['+index+'].idDelete';
this.setData({
[deletedtodo]:true
})
}
})
注意:deletedtodo為變量作為key值的時候要用 [] 包裹起來疏哗。
6、直接修改this.data禾怠,雖然會改變數(shù)據(jù)返奉,但是頁面不會重新渲染,無法改變頁面狀態(tài)吗氏,會造成數(shù)據(jù)不一致的情況
7芽偏、單次設置的數(shù)據(jù)不能超過1024KB,請盡量避免一次設置過多的數(shù)據(jù)
8弦讽、不需要在this.data中預先定義污尉,使用setData()方法會自動創(chuàng)建該數(shù)據(jù)
this.setData({
name:'張三' //name在this.data中未定義,但不會報錯
})
name在this.data中未定義往产,但是這種寫法不會報錯被碗,而且還會在this.data.zhong創(chuàng)建name這條數(shù)據(jù)》麓澹可以用this.data.name獲取到該條數(shù)據(jù)
二锐朴、對數(shù)組的操作,json操作和數(shù)組一樣蔼囊。
1焚志、數(shù)組的增加:
我們可以自己組裝一個對象如上圖的obj,然后用push()方法將其添加到數(shù)據(jù)的最后畏鼓。注意push的數(shù)據(jù)的index是+1的酱酬,也就是說原本數(shù)組中index依次為0,1云矫,2岳悟,新增加的就是3,依次類推。如果想將數(shù)據(jù)插入到數(shù)據(jù)某個位置贵少,那么可以合理運用concat()的方法將數(shù)據(jù)合并到數(shù)據(jù)中呵俏。
也可以用splice()方法添加,第一個參數(shù)是插入的位置滔灶,第二個參數(shù)設為0普碎,則為添加,若為大于0的的數(shù)字則為要刪除的個數(shù)录平,第三個參數(shù)只有在第二個參數(shù)為0是使用麻车,是添加的內(nèi)容。這種方法非常靈活斗这,只需要改變第一個參數(shù)就可以將內(nèi)容添加到數(shù)據(jù)的任何一個地方动猬。下面附上splice的用法;
Splice
- splice()方法向/從數(shù)組中添加/刪除元素表箭,然后返回被刪除的元素組成的數(shù)組赁咙。
- 用于數(shù)組對象。
- arr.splice(index, howmany, item1,…, itemX)
- 注意:這個方法會對原數(shù)組做出修改免钻。獲得的也是新數(shù)組彼水。
2、數(shù)組的刪除:
刪除也是用splice()方法實現(xiàn)的极舔,ceshi.splice(1,1)就是從index為1的位置開始凤覆,刪除1個元素。splice()用法參上拆魏。
3盯桦、數(shù)組的修改:
將key值以數(shù)據(jù)路徑的形式賦值,可以達到修改數(shù)據(jù)中的某一條渤刃,此處俺附,我們只將ceshi[0].value的值改變?yōu)?oooo',其他數(shù)據(jù)未發(fā)生變化溪掀。
也可以用這種方法修改數(shù)組的參數(shù),對這種方法有疑問的可以參考setData()第二條步鉴。