setData
函數用於將數據從邏輯層發送到視圖層,同時改變對應的 this.data
的值。html
注意:函數
接受一個對象,以 key,value 的形式表示將 this.data 中的 key 對應的值改變成 value。this
其中 key 能夠很是靈活,以數據路徑的形式給出,如 array[2].message
,a.b.c.d
,而且不須要在 this.data 中預先定義。spa
Page({
data: {
text: 'init data', array: [{text: 'init data'}], object: { text: 'init data' } }, changeText: function() { // this.data.text = 'changed data' // bad, it can not work this.setData({ text: 'changed data' }) }
data: { main_view_bgcolor: "", border: "", }
this.setData({ border:"aa"//這個border跟上面data裏面的border是對應的。 })
這種方式,點擊以後觸發事件,執行函數,更新數據,同時能夠實時更新渲染界面。prototype
data: { main_view_bgcolor: "", border: "", isChecked: [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true] }
如上,若是我想動態修改isChecked裏面指定某個下標的值怎麼辦?日誌
首先我先噴一句,這是百度知道網友給的回答。https://zhidao.baidu.com/question/1434931285716531579.htmlcode
你TM就不能把代碼多粘貼一點?會死啊?鬼知道你寫的什麼意思。xml
好了(故做正經),下面我來講怎麼動態修改一個對象的某元素的值。上面這個是索引下標,等會還有個key-value的例子。htm
代碼:對象
click: function (e) { var id = e.target.id//根據點擊不一樣的view獲取對應的id值 var str = "isChecked[" + id + "]"//重點在這裏,組合出一個字符串 this.setData({ [str]: false//用中括號把str括起來便可 }) }
看註釋。點擊->觸發對應事件->來到click函數這裏,根據點擊的view獲取對應的id,修改指定下標的isChecked。
上面這個isChecked的索引是從0到n的,便可以經過isChecked[0]、isChecked[1]來訪問。能夠在操做的過程當中打印日誌看一下數據類型。
哦,對了,在wxml中若是要綁定isChecked中元素的值,能夠這麼:
<view class="{{isChecked[2]?'main_view':'main_view_clicked'}}" bindtap='click' bindlongpress='cancelclick' id='2' bindtap='click'></view>不要在乎那個三目運算,反正相似於js中訪問方式,也是isChecked[index]。同理,下面的key-value類型的就能夠經過isChecked[index].key來綁定數據了。
下面是key-value類型的:
data: { main_view_bgcolor: "", border: "", isChecked: [ { key: true }, { key: true }, { key: true } ] }
直接寫操做方式了(由於就跟上面只有一點點的區別):
var str = "isChecked[" + id + "].key" this.setData({ [str]: false })