2

Zendesk の ember-resource アダプタを ember.js で使用する方法について、現在有効な例はありますか? モデルの定義方法は理解できたと思いますが、コントローラーとルートでの使用方法に関するヒントが見つかりません。

4

1 に答える 1

2

一般に、特定のルートには次の 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
  }
});

Ember-Resourceケース 2 は、のfetchメソッドが 2 つの引数 (基になる JSON データとモデル自体) で解決される promise を返すため、より複雑です。そのEmber.Route ような promise を返す は、最初のものをに渡すだけなsetupので、独自の promise を作成する必要があります。

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 に答える