- 企业数字化转型:钉钉小程序开发权威指南
- 杨鹤等
- 557字
- 2022-05-05 21:37:52
4.4.1 注册小程序页面
1.Page
Page方法接收一个Object作为参数,该参数用来指定页面的初始数据、生命周期方法、事件处理函数等。
示例代码:
![](https://epubservercos.yuewen.com/26B254/23020651101673306/epubprivate/OEBPS/Images/42664_49_2.jpg?sign=1739584725-8MEM6H4mYGGN32NQ1NUPIozf10O4ZV8K-0-9b48ab7f3d350c6abc41408a35860eff)
![](https://epubservercos.yuewen.com/26B254/23020651101673306/epubprivate/OEBPS/Images/42664_50_1.jpg?sign=1739584725-2ubfg5ZpKpPB0ki8eOFCIzcn9AAjwQQ2-0-4f30d83717556c3733b9f83fe144f295)
在上述代码中,Page方法的参数列表如表4-7所示。
表4-7 Page方法的参数列表
![](https://epubservercos.yuewen.com/26B254/23020651101673306/epubprivate/OEBPS/Images/42664_50_2.jpg?sign=1739584725-7PSw0cXfmD1PnRdNI4xIMPnGxlGGUBMq-0-9d6d7890b1a250820652acf6dc6f02db)
续表
![](https://epubservercos.yuewen.com/26B254/23020651101673306/epubprivate/OEBPS/Images/42664_51_1.jpg?sign=1739584725-h0F5wxWxGGVCjjIFWkAbHuC5NOFtNuuD-0-2c2613f49b077e8612088c7318860a8c)
(1)页面初始数据data。
data是页面第一次渲染时使用的初始数据。
注意
当data作为对象时,如果在页面中修改data,则会影响该页面的不同实例。
.axml示例代码:
![](https://epubservercos.yuewen.com/26B254/23020651101673306/epubprivate/OEBPS/Images/42664_51_2.jpg?sign=1739584725-7hgOQxpzvdeAJ0yItUPMXqGaeuFY0Ebp-0-a97db21e9007bef5d154c47ed82b745f)
.js示例代码:
![](https://epubservercos.yuewen.com/26B254/23020651101673306/epubprivate/OEBPS/Images/42664_51_3.jpg?sign=1739584725-kltnxyfGRscqTUumlbb7m3ATs1jXfkgB-0-ec978956710fb3884d393788bc42a675)
(2)生命周期方法及其说明如表4-8所示。
表4-8 生命周期方法及其说明
![](https://epubservercos.yuewen.com/26B254/23020651101673306/epubprivate/OEBPS/Images/42664_52_1.jpg?sign=1739584725-2r8k3HjTTsgUQyHqCSjzQUIrvUsU6lsP-0-f95e21f53e85baa7a02aab0122947d54)
(3)事件处理函数及其说明如表4-9所示。
表4-9 事件处理函数及其说明
![](https://epubservercos.yuewen.com/26B254/23020651101673306/epubprivate/OEBPS/Images/42664_52_2.jpg?sign=1739584725-tTiqTkEeicADuS49f6RufqqrSMH8JoXF-0-c154370e4a6fe021ade8aba752072357)
2.Page.prototype.setData
setData方法用于将数据从逻辑层发送到视图层,同时改变对应的this.data的值。
setData方法接收一个对象作为参数。对象的键名key可以非常灵活,以数据路径的形式给出,如array[2].message、a.b.c.d,并且不需要在this.data中预先定义。
注意
● 直接修改this.data无效,无法改变页面的状态,还会造成数据不一致。
● 尽量避免一次性设置过多的数据。
示例代码:
![](https://epubservercos.yuewen.com/26B254/23020651101673306/epubprivate/OEBPS/Images/42664_52_3.jpg?sign=1739584725-1amnGhFLNzTLS8dSCCHaYVPziCbTBSNu-0-5f7bd7436f675c74dcb3b75f930569ba)
![](https://epubservercos.yuewen.com/26B254/23020651101673306/epubprivate/OEBPS/Images/42664_53_1.jpg?sign=1739584725-8dho3qNFpxfMRZl8RiVhh6uS9NHlZLGS-0-ab1d6a7d4419cb5f2dbcab1f47e0371a)
3.Page.prototype.$spliceData
$spliceData同样用于将数据从逻辑层发送到视图层,但是相比setData,在处理长列表时,其具有更高的性能。$spliceData接收一个对象作为参数。
● 对象的键名key可以非常灵活,以数据路径的形式给出,如array[2].message、a.b.c.d,并且不需要在this.data中预先定义。
● 对象的value为一个数组(格式为[start,deleteCount,...items]),数组的第一个元素为操作的起始位置,第二个元素为删除的元素的个数,剩余的元素均为插入的数据,对应ES5中数组的splice方法。
.axml示例代码:
![](https://epubservercos.yuewen.com/26B254/23020651101673306/epubprivate/OEBPS/Images/42664_54_1.jpg?sign=1739584725-JOE65fkRfFQNt3apq5tphAVLnfKJ4Xxo-0-a2f52837bf76bc8618bcd377292011ea)
.js示例代码:
![](https://epubservercos.yuewen.com/26B254/23020651101673306/epubprivate/OEBPS/Images/42664_54_2.jpg?sign=1739584725-FpWFlO9lIKrTfCrbS2O9RWbOSGbkW7sL-0-fa2bcd66efad23a8427a77fb25e9e4a0)
页面输出:
![](https://epubservercos.yuewen.com/26B254/23020651101673306/epubprivate/OEBPS/Images/42664_54_3.jpg?sign=1739584725-zfDYPLtlgPUqUY5MFj3rRtV2MJclA1Nh-0-34c2f2dc8d83e3168d008b62c94578b8)