2

是否有任何关于如何将Zendesk 的 ember-resource 适配器与 ember.js 一起使用的工作和当前示例?我想我了解如何定义模型,但我找不到任何关于如何在控制器和路由中使用它的提示。

4

1 回答 1

2

一般来说,给定路由有两种方法:(1)立即转到页面并在数据可用时填写数据(2)在转换之前等待数据被获取。

案例 1 非常简单。您create是模型类的一个实例,调用fetch并返回它。

var FooRoute = Em.Route.extend({
  model: function(params) {
    var foo = Foo.create({ id: params.id });
    foo.fetch();
    return foo;
  },

  setup: function(foo) {
    // foo is a Foo, but may not have its data populated
  }
});

情况 2 更复杂,因为Ember-Resource'sfetch方法返回一个使用两个参数解析的承诺——底层 JSON 数据和模型本身。返回此类承诺的 AnEmber.Route 只会将第一个传递给setup,因此我们必须创建自己的承诺:

var FooRoute = Em.Route.extend({
  model: function(params) {
    var foo = Foo.create({ id: params.id }),
        deferred = $.Deferred();
    foo.fetch().then(
      function(json, model) { deferred.resolve(model); },
      function(error) { deferred.reject(error); }
    );
    return deferred.promise();
  },

  setup: function(foo) {
    // foo is a Foo with its data populated
  }
});
于 2013-07-14T20:51:09.840 回答