2013-11-21 8 views
5

最初にルートに行くことなくモデルをロードするにはどうすればよいですか? emberjsは "needs"を使用していますが、他のコントローラーモデルは空です

this.get('controllers.users.content'); 

needs: "users" 

を使用して別のコントローラから
App.UsersRoute = Em.Route.extend({ 
    model: function() { 
     return ['bob', 'sue', 'tom']; 
    }, 

    setupController: function(controller, model) { 
    controller.set('model', model); 
    } 
}); 

は限り私が最初UsersRouteを訪れると正常に動作します。 thusly、それを必要とする最上位のルートで

答えて

3

ロードそれを:あなたは、燃えさしデータやEPFやAJAXを使用している場合、モデルが約束されることをことを

App.SomeOtherRoute = Em.Route.extend({ 
    setupController: function(controller, model) { 
    controller.set('model', model); 
    this.controllerFor('user').set('model', ['bob', 'sue', 'tom']); 
    } 
}); 

注意。あなたは、ユーザーのコレクションをしませ欲しいように見えるので、

setupController: function(controller, model) { 
    controller.set('model', model); 
    return this.get('store').findAll('user').then(function(users) { 
     this.controllerFor('users').set('model', users); 
    }); 
    } 

注意を私はがUserController、ないUserControllerでを使用している二番目に:あなたはどうなるので、約束をするコントローラのモデルを設定することはできません単一のユーザー。

+1

私は必要なもののように見えますが、私の選択したビューにcontentBinding = "controllers.users.content"を設定していません。しかし、私はユーザーに戻って戻ってくると、それが設定されます。私はその要求を見て、店舗に人が住んでいるのを見ることができます。 –

2

私はこの過去の週末、この同じ問題をヒットし、私のために働い以下:

App.SomeOtherController = Ember.Controller.extend({ 
    needs: ['users'] 
}); 

App.SomeOtherRoute = Ember.Route.extend({ 
    setupController: function(controller, model){ 
     this._super(controller, model); 
     controller.set('controllers.users.model', ['bob', 'sue', 'tom']); 
    } 
}); 

それはAJAX呼び出し/燃えさしデータであるならば、あなたはこのような何かが必要です。しかし

App.SomeOtherController = Ember.Controller.extend({ 
    needs: ['users'] 
}); 

App.SomeOtherRoute = Ember.Route.extend({ 
    setupController: function(controller, model){ 
     this._super(controller, model); 
     this.get('store').findAll('user').then(function(users) { 
     controller.set('controllers.users.model', users); 
     }); 
    } 
}); 

を同僚はコードレビューで私に指摘しました。私がこれを行う必要があれば、ルート/リソース/モデルが正しく構成されていない可能性があります。換言すれば、外部経路は、内部経路のモデルに依存すべきではない。だから今私は戻って、これをリファクタリングして、ユーザモデルが外側のルートのモデルの一部であるようにして、それを私の内側のルートコントローラで使うことを考えています。

関連する問題