setupController
主に、一部のコントローラーコンテキストを動的に設定するためのものです。あなたの例では、タイトルが常に「Hello world!」になる場合 クラス宣言で設定しても問題ありません。
デフォルトでは、 のプロパティをルートのフックから返された値にsetupController
設定します。model
controller
model
たとえば、別のコントローラーのモデルを設定したり、モデルに依存するコントローラーの初期状態を設定したりすることもできます。
たとえば、次のものがあるとします。
// Model
App.Post = DS.Model.extend({
title: DS.attr('string'),
text: DS.attr('string'),
autoEdit: DS.attr('string')
});
// Controller
App.PostController = Ember.ObjectController.extend({
isEditing: null,
toggleEdit: function() { this.toggleProperty('isEditing'); }
});
テンプレート:
<a href="#" {{action 'toggleEdit'}}>Toggle edit mode</a>
{{#if isEditing}}
{{input type="text" value=title placeholder="Title"}}
{{textarea type="text" value=text placeholder="Text"}}
{{else}}
<h1>{{title}}<h1>
<article>{{text}}</article>
{{/if}}
そして、 にautoEdit
等しい投稿に対してデフォルトで編集モードをオンにするとよいと判断しますtrue
。あなたはおそらくルートでそれをしたいと思うでしょう(インスタンス化されたとき、コントローラはモデルについて何も知らないので):
App.PostRoute = Ember.Route.extend({
setupController: function(controller, model) {
this._super(controller, model);
if (model.get('autoEdit')) {
controller.set('isEditing', true);
}
}
});
つまり、基本的には、コントローラーを「初期化」するためのものです(モデルとデフォルト状態を設定します)。