ember.js - Socket.IO 与 Ember 和 Ember-Data

标签 ember.js socket.io ember-data

我一直在四处寻找,但找不到任何也使用socket.io的ember(1.0.0-rc.1)和ember-data(修订版11)的最新示例。我已经尝试过类似的事情。

App.ApplicationRoute = Ember.Route.extend({
  setupController: function(controller, data) {
    var socket = io.connect(),
        self = this;
    socket.on('apartment/new', function(apartment) {
      var apt = App.Apartment.createRecord(apartment);
      self.controllerFor('apartments').pushObject(apt);
    });
  }
});

这实际上会创建一个新的模型类,它将对象推送到 Controller ,并创建一个新的 li 但值不会呈现。

<ul class="list-view">
{{#each apartment in controller}}
    <li>
      {{#linkTo 'apartment' apartment }}
        <span class="date">{{date apartment.date}}</span>
        {{apartment.title}}
      {{/linkTo}}
    </li>
{{/each}}
</ul>

这和运行循环有关系吗?如何强制渲染值?或者有更好的方法吗?

最佳答案

对此有一个非常简单的解决方案,我在一些应用程序中使用了它。您可以为套接字提供通用回调并接受任何类型的数据

callback: function(message) {
  // this is better than just `eval`
  var type = Ember.get(Ember.lookup, message.type);
  store.load(type, message.data);
}

或者在这里它是专门根据您的用例定制的

socket.on('apartment/new', function(apartment) {
  store.load(App.Apartment, apartment);
});

使用store.load会将记录数据直接加载到身份映射中。还有用于加载多条记录的 loadMany

关于ember.js - Socket.IO 与 Ember 和 Ember-Data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15376839/

相关文章:

asp.net - 如何结合 ASP MVC 5 和 Emberjs

node.js - 如何通过 Socket.io 和 Express 使用集群

ember.js - 将文本字段绑定(bind)到 ember 中的模型的最佳方法

ember.js - Ember.js 中的可枚举对象(键值映射)

javascript - 如何在 EmberJS 中显示/隐藏 View

ember.js - 如何在考虑单元测试的情况下构建 Ember 应用程序?

Node.js Socket.io Heroku "no method ' 配置'"

ember.js - peekRecord() 不工作但 peekAll() 工作

authentication - Ember.js Ember Simple Auth 在 LocalStorage 中保留身份验证信息不起作用

javascript - 在 Socket.io 中访问 i18n