我正在编写一个应用程序,它通过Node.js利用Ember.js,Ember Data和Socket.IO。我试图找出从套接字响应中接收数据的最佳方法,并将其加载到我的Ember数据存储中,例如:
window.socket = io.connect('http://localhost');
socket.on('action here', function(response) {
// how to load "response" JSON data into Ember Data store from here...?
});
编写自定义DS.Adapter是最好(或唯一好)的解决方案吗?还是有另一种好的,可维护的方法来实现这个目标吗?
答案 0 :(得分:4)
最好的方法是编写自己的适配器,但是如果你只需要加载模型(没有保存),你就可以使用适配器的load
方法 - 就像这样:
socket.on('single-model', function(response) {
DS.defaultStore.load(response);
});
socket.on('multiple-models', function(response) {
for(i in response){
DS.defaultStore.load(response[i]);
}
});
将适配器定义为FixtureAdaptor
。
答案 1 :(得分:1)
为了记录,我最终得到了这里提出的答案:
https://stackoverflow.com/a/14508316/1470194
使用Ember.Instrumentation技术,我能够方便地调用我的控制器并以这种方式访问我的商店。
我意识到在许多情况下编写自定义适配器可能是必要的,但它超出了我的项目所要求的范围,所以这个解决方案最终是完美的。