深く掘り下げれば明らかになると思いますが、今のところ、これを実現する方法は明らかではありません。
ルーティングに関するこの役立つ SO 記事の情報に従っていましたが、この例には重要な部分が欠けています。つまり、「ホーム」リンクをクリックせずに「ホーム」ビューをすぐにレンダリングするにはどうすればよいですか?
私はこれを理解するためにドキュメントを掘り下げ始めましたが、その間、後世のために答えたのは有用な質問のようです.
上記の質問hereの動作中のjsfiddleの例で遊んでいて、デフォルトのルーティングが動作しているように見える他の例と比較しています
ここまではまだ謎です。
現在のコード:
App.Router = Em.Router.extend({
enableLogging: true,
location: 'hash',
root: Em.State.extend({
// EVENTS
goHome: Ember.State.transitionTo('home'),
viewProfile: Ember.State.transitionTo('profile'),
// STATES
index: Em.State.extend({
route: "/",
redirectsTo: 'home'
}),
home: Em.State.extend({
route: '/home',
connectOutlets: function(router, context) {
var appController = router.get('applicationController');
appController.connectOutlet('home');
}
}),
// STATES
profile: Em.State.extend({
route: '/profile',
connectOutlets: function(router, context) {
var appController = router.get('applicationController');
appController.connectOutlet('profile');
}
}),
doOne: function() {
alert("eins");
}
})
});
更新: 解決策
私が取り組んでいた例が機能しなかった理由Em.State.extend
は、Em.Route.extend
. 興味深いのは、それらを 1 つずつ変更していくと、すべてを変更するまで例が機能しないことです。
これが実際の例です:
App.Router = Em.Router.extend({
enableLogging: true,
location: 'hash',
root: Em.Route.extend({
// EVENTS
goHome: Ember.State.transitionTo('home'),
viewProfile: Ember.State.transitionTo('profile'),
// STATES
index: Em.Route.extend({
route: "/",
redirectsTo: 'home'
}),
home: Em.Route.extend({
route: '/home',
connectOutlets: function(router, context) {
var appController = router.get('applicationController');
appController.connectOutlet({name: 'home'});
}
}),
// STATES
profile: Em.Route.extend({
route: '/profile',
connectOutlets: function(router, context) {
var appController = router.get('applicationController');
appController.connectOutlet('profile');
}
}),
doOne: function() {
alert("eins");
}
})
});