只需要以處理資料物件模型為核心的設計方式思考,利用 Vue 的 v-for 即可將物件陣列依序代入範本。
在 ONSEN UI 中 ons-list-item 指的是像左圖一個一個項目的樣式,在這裡我們先不實作樣式,先利用 {{ device }} 將整個資料物件列出了解一下其運作原理。
<ons-list-item modifier="chevron tappable" class="plan" v-for="device in devices"> {{ device }}</ons-list-item>const mainPage = { template: '#mainPage', props: ['pageStack'], data(){ return { devices: myDevices.devices }; }};我們只需要將由 WFCloud 回來的設備清單 myDevices.devices 直接回傳給 v-for 使用即可完成。
<ons-list-item modifier="chevron tappable" class="plan" v-for="device in devices"><ons-row><ons-col width="80px" class="plan-left"><div class="plan-date"><span v-bind:class="{label:true, online:device.online, offline:!device.online}">{{ device.key }}</span></div><div class="plan-duration">{{ device.product}}</div></ons-col><ons-col width="2px" class="plan-center" v-bind:style="{backgroundColor: device.online == 1 ? '#3399ff' : '#ccc'}"></ons-col><ons-col class="plan-right"><div class="plan-name">{{ device.name}}</div><div class="plan-info"><div><ons-icon class="plan-icon" icon="fa-phone"></ons-icon>{{ device.config }}</div></div></ons-col></ons-row></ons-list-item>watchAll 只要設備有任何異動就會收到更新。因此可以來檢查設備是否上線。
CONFIG 是 REST MQTT 中的一個命令,API 請看這裡。CONFIG 會列出所有你設備好要回傳的設備資料。例如:開關狀態 溫濕度 風向 電力 等等。
function bindDeviceEvent(){ wf8266r.watchAll(function(data){ myDevices.devices[data.index].online = true; if(data.type == "CONFIG") myDevices.devices[data.index].config = data; })}