理論的には、必要なことを行うためにそれreopenClass
を再度開いEmber.Controller
て拡張するために使用できます。jsfiddle で試してみましたが、うまくいきませんでした。
私が仕事に就いたのはEmber.Mixin
.
App.IsOn = Ember.Mixin.create({
needs: ['application'],
isOn: Ember.computed.alias("controllers.application.isOn")
})
App.IndexController = Ember.Controller.extend(App.IsOn,{});
自動生成されたコントローラーは処理しませんが、他にコントローラーが必要ない場合は、1 行だけで機能をコントローラーに入れることができます。
すべてが機能しているjsfiddleは次のとおりです。
http://jsfiddle.net/DqeLv/
編集: の代わりにtoggleOn
メソッドを使用したいことも追加する必要があります。イベントのバブリングは、最も具体的なコントローラーから、そのコントローラーのルート、そして連続する各親ルート (コントローラーではありません) に進みます。ApplicationRoute
ApplicationController
つまり、あなたが"/users/new"
アクションをトリガーすると、次のようになります:
UsersNewController
=> UsersNewRoute
=> UsersRoute
=>ApplicationRoute
編集 #2: わかりました。しばらく眠った後reopen
、自動生成されたコントローラーが自動的にisOn
プロパティを取得できるように作業を開始できました。
Ember.Controller.reopen({
needs: ['application'],
isOn: Ember.computed.alias("controllers.application.isOn")
});
これは、ArrayController
orのインスタンスではなく、「一般的な」コントローラーでのみ機能するようですObjectController
(を返さないルートのみmodel
)。
ArrayController
自動生成されたObjectController
インスタンスで機能させたい場合はreopen
、これらの 2 つのクラスを使用できます。
Ember.ArrayController.reopen({ ... })
http://jsfiddle.net/HTPaF/2/