一、setData()方法:
1速那、參數(shù)接受一個(gè)對(duì)象俐银,以key,value的形式表示琅坡;
2悉患、參數(shù)和變量名稱(chēng)一致,可用一個(gè)值代替(es6新語(yǔ)法特性)
如上圖所示榆俺,在this.data中設(shè)置ceshi這條數(shù)據(jù)售躁,在方法中,我們定義ceshi變量讓其等于that.data.ceshi; 然后對(duì)ceshi進(jìn)行操作茴晋,其實(shí)就是對(duì)that.data.ceshi進(jìn)行操作陪捷,而that.setData({ceshi})就等同于that.setData({ceshi : ceshi }) ; 第一個(gè)ceshi 是that.data.ceshi, 第二個(gè)ceshi 是我們定義的變量ceshi诺擅。通過(guò)打印的結(jié)果可以看到市袖,數(shù)據(jù)已經(jīng)添加上了。
3烁涌、可以設(shè)置一個(gè)或多個(gè)data數(shù)據(jù)
this.setData({
? list:'change data',
? info:'change data'
})
4苍碟、key可以以數(shù)據(jù)路徑的形式給出(路徑形式的key必須帶引號(hào))(經(jīng)小程序更新后,現(xiàn)已支持不加引號(hào)的寫(xiě)法)
this.setData({
? ? 'list[0].title' : 'change data',? //數(shù)據(jù)路徑key必須帶''號(hào)
? ? 'list[0].num' : 'change data'? ? ? //數(shù)據(jù)路徑key必須帶''號(hào)
})
5撮执、key值可以為變量微峰,為變量的時(shí)候要用[ ]引起來(lái)
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值的時(shí)候要用[ ] 包裹起來(lái)。
6抒钱、直接修改this.data蜓肆,雖然會(huì)改變數(shù)據(jù),但是頁(yè)面不會(huì)重新渲染谋币,無(wú)法改變頁(yè)面狀態(tài)仗扬,會(huì)造成數(shù)據(jù)不一致的情況
7、單次設(shè)置的數(shù)據(jù)不能超過(guò)1024KB蕾额,請(qǐng)盡量避免一次設(shè)置過(guò)多的數(shù)據(jù)
8早芭、不需要在this.data中預(yù)先定義,使用setData()方法會(huì)自動(dòng)創(chuàng)建該數(shù)據(jù)
this.setData({
? ? name:'張三'? //name在this.data中未定義诅蝶,但不會(huì)報(bào)錯(cuò)
})
name在this.data中未定義退个,但是這種寫(xiě)法不會(huì)報(bào)錯(cuò)精肃,而且還會(huì)在this.data.zhong創(chuàng)建name這條數(shù)據(jù)≈钠颍可以用this.data.name獲取到該條數(shù)據(jù)
二、對(duì)數(shù)組的操作筐眷,json操作和數(shù)組一樣黎烈。
1、數(shù)組的增加:
我們可以自己組裝一個(gè)對(duì)象如上圖的obj匀谣,然后用push()方法將其添加到數(shù)據(jù)的最后照棋。注意push的數(shù)據(jù)的index是+1的,也就是說(shuō)原本數(shù)組中index依次為0武翎,1烈炭,2,新增加的就是3宝恶,依次類(lèi)推符隙。如果想將數(shù)據(jù)插入到數(shù)據(jù)某個(gè)位置,那么可以合理運(yùn)用concat()的方法將數(shù)據(jù)合并到數(shù)據(jù)中垫毙。
也可以用splice()方法添加霹疫,第一個(gè)參數(shù)是插入的位置,第二個(gè)參數(shù)設(shè)為0综芥,則為添加丽蝎,若為大于0的的數(shù)字則為要?jiǎng)h除的個(gè)數(shù),第三個(gè)參數(shù)只有在第二個(gè)參數(shù)為0是使用膀藐,是添加的內(nèi)容屠阻。這種方法非常靈活,只需要改變第一個(gè)參數(shù)就可以將內(nèi)容添加到數(shù)據(jù)的任何一個(gè)地方额各。下面附上splice的用法国觉;
Splice
splice()方法向/從數(shù)組中添加/刪除元素,然后返回被刪除的元素組成的數(shù)組臊泰。
用于數(shù)組對(duì)象蛉加。
arr.splice(index, howmany, item1,…, itemX)
參數(shù) 描述
index 必需。整數(shù)缸逃,規(guī)定了添加/刪除元素的位置针饥,使用負(fù)數(shù)可從數(shù)組結(jié)尾處規(guī)定位置。
howmany 必需需频。要?jiǎng)h除的元素的數(shù)量丁眼。如果設(shè)置為0,則不會(huì)刪除元素昭殉。如果添加元素則這里應(yīng)該設(shè)置為0.
itemX 可選苞七。向數(shù)組添加的新項(xiàng)目藐守。在添加的時(shí)候用。
注意:這個(gè)方法會(huì)對(duì)原數(shù)組做出修改蹂风。獲得的也是新數(shù)組卢厂。
2、數(shù)組的刪除:
刪除也是用splice()方法實(shí)現(xiàn)的惠啄,ceshi.splice(1,1)就是從index為1的位置開(kāi)始慎恒,刪除1個(gè)元素。splice()用法參上撵渡。
3融柬、數(shù)組的修改:
將key值以數(shù)據(jù)路徑的形式賦值,可以達(dá)到修改數(shù)據(jù)中的某一條趋距,此處粒氧,我們只將ceshi[0].value的值改變?yōu)?oooo',其他數(shù)據(jù)未發(fā)生變化节腐。
也可以用這種方法修改數(shù)組的參數(shù)外盯,對(duì)這種方法有疑問(wèn)的可以參考setData()第二條。
原文鏈接:https://blog.csdn.net/namecz/article/details/79623550