2016-03-24 11 views
-1

私のアプリケーションはアプリケーションルートしか持っていませんが、明示的なコントローラーファイルなしで処理します。実際、私はコントローラーファイルを一切持っておらず、そのままにしておきたいのです。自分のアプリケーションのルートIセットアップでEmberセットアップでは、コントローラーで計算されましたが、ルート内のsetupController内から計算されました

アプリケーションテンプレートで使用されているコントローラでのカップルのデフォルト:

setupController(controller, model) { 
    this._super(controller, model); 

    controller.set('session', Ember.inject.service('session')); 
    controller.set('environmentName', ENV.environment); 
}, 

私は今、変化する二つの異なる変数に反応すること、計算をしたいです。これらの変数は、アプリケーションルートにバブルアップするアクションで変更されます。

だから、彼らはfoobarと言いますが、ルート自体で計算されます。

someComputed: Ember.computed('foo', 'bar', function() { 
    let result = ''; 
    // logic involving foo and bar 
    return result; 
}), 

問題は、この問題はアプリケーションテンプレートでは利用できないということです。どのようにして計算機をより良い方法でコントローラに登録することができ、foobarを変更するアプリケーションルートアクションに応答できますか?

答えて

4

controllers/application.jsファイルを明示的に作成していないにもかかわらず、emberは引き続きファイルを提供しています(また、setupControllerフックでプロパティを設定しています)。

setupController(controller, model) { 
    this._super(controller, model); 

    controller.set('session', Ember.inject.service('session')); 
    controller.set('environmentName', ENV.environment); 
    controller.set('someComputed', Ember.computed('foo', 'bar', function() { 
    let result = ''; 
    // logic involving foo and bar 
    return result; 
    })), 
}, 

は今、あなたはあなたのテンプレートで{{someComputed}}へのアクセス権を持っている必要があります:あなたは、あなたのコントローラ上の計算ではなく、ルートを設定することができます。

コントローラを明示的に作成してそこに移動することをお勧めします。コントローラーはまだ殺されておらず、依然としてエバーデザイン戦略の重要な側面です。

EDIT:閉じ括弧が欠けています。

関連する問題