我正在開發我的第一個Angular項目,並且我一直在考慮用這個問題說出一段時間的最佳方式,但是我要給這個鏡頭。更新來自不同來源的AngularJS數據
我正在構建一個使用Veralite(MiOS)以json格式返回設備數據的應用程序。第一個請求返回系統中的所有設備(下面的示例)。
"devices":[
{
"name":"Bedroom Light",
"altid":"4",
"id":6,
"category":2,
"subcategory":0,
"room":0,
"parent":1,
"status":"0",
"level":"0",
"state":-1,
"comment":""
},
{
"name":"Office Light",
"altid":"6",
"id":18,
"category":2,
"subcategory":0,
"room":0,
"parent":1,
"level":"0",
"status":"0",
"state":-1,
"comment":""
}
一旦所有的設備都返回,我的腳本開始長時間輪詢維拉引擎。一旦對設備進行了更改,則返回長輪詢的結果,但結果只包括已更改的設備(下面的示例)。
"devices":[
{
"altid":"6",
"id":"18",
"subcategory":"0",
"room":"0",
"parent":"1",
"level":"20",
"status":"1",
"state":"4",
"comment":"Office Light: Transmit was ok"
}
什麼我想繞到我的頭,是更新現有設備陣列與最新更新的數據的正確方法。我是否需要將它們轉換爲數組,然後遍歷每個數組並嘗試通過鍵匹配它們?
希望我儘可能清楚地問到這一點。
編輯:只是爲了更新這一點,任何人都發現了這一點,特別是有興趣爲Veralite開發的人。從原始請求返回的ID將作爲整數返回,但當長輪詢引擎時,ID將作爲字符串返回。因此,即使所選答案是正確的,您仍然需要將更新後的設備ID解析爲整數(parseInt),或者在過濾設備時僅使用==而不是== ==。
不夠公平,但我該如何將新值推送到$ scope變量? – Chris 2014-10-29 21:34:25
如果你只是更新字段值,你根本沒有更新$ scope變量(我認爲它是數組,$ scope.devices)。 – 2014-10-29 21:36:16
假設在輪詢之後返回了多個更新的設備,這是否是相同的方法?我會窩窩嗎? – Chris 2014-10-29 21:50:20