所以,我无法从我的livestream websocket中引入数组,这是以JSON形式出现的。
在ember检查器中没有看到任何记录,但很多是使用console.log(数据)打印出来的。得到错误:
-94 Uncaught Error: Assertion Failed: You must include an `id` in a hash passed to `push`
(但每个直播更新中都包含一个ID)。
以下是代码:http://jsbin.com/qapik/1/edit?html,js,output
JSON看起来像......
{
"group":{
"usage":{
"case1":0,
"case2":0,
"case3":0
},
"sunshine":"00/00/0000",
"id":1010,
"device_info":11.5,
}
}
控制台显示更新......
Tue Apr 01 2014 09:22:09 GMT-0400 (EDT): group update: {"group": ...
在一天结束时,我想展示{{#each}} {{device_info}} ...等等。
我哪里错了?
谢谢!
编辑 - 解决方案:
App.ApplicationRoute = Ember.Route.extend({
activate: function() {
var socket = window.io.connect('http://localhost:8887');
var self = this;
socket.on('group_live_stream', function(data){
var dataObj = JSON.parse(data); // data happens to be a JSON string
self.store.push('group',dataObj.group);
});
}
});
答案 0 :(得分:0)
推送到商店的对象应按照以下示例中的格式进行格式化:http://emberjs.com/api/data/classes/DS.Store.html#method_push
{
"usage":{
"case1":0,
"case2":0,
"case3":0
},
"sunshine":"00/00/0000",
"id":1010,
"device_info":11.5
}
换句话说,当您将其推送到商店时,该对象不应包含在group
中。这与Ember Data期望使用它的REST适配器的JSON响应的方式明显不同(当ED获得组记录时,它确实期望像{group:{...}}
这样的对象。)