2013-04-25 141 views
0

我嘗試從灰燼指南得到example的工作,但我不明白:灰燼路由器和控制器

window.App = Ember.Application.create() 

App.Router.map -> 
    this.route("about"); 
    this.route("favorites", { path: "/favs" }) 

App.IndexRoute = Ember.Route.extend({ 
    setupController: (controller) -> 
    controller.set('title', "My App") 
}); 

模板:

<h1>{{title}}</h1> 
<nav> 
    {{#linkTo "index"}}Index{{/linkTo}} 
    {{#linkTo "about"}}About{{/linkTo}} 
    {{#linkTo "favorites"}}Favorites{{/linkTo}} 
</nav> 

據我瞭解的例子應該顯示標題,當我到達索引頁面,但沒有任何反應。所以有人可以看到這裏有什麼不對。

回答

1

您正在設置IndexController中的title屬性,但它看起來像您的臨時遲到不是index模板,而是application模板。你可以改變你的IndexRoute使用controllerFor這樣你就可以訪問ApplicationController(自動生成),並設置一個值的屬性,與此類似:

App.IndexRoute = Ember.Route.extend 
    setupController: (controller) -> 
    @controllerFor('application').set('title', 'My App') 

(見fiddle

或者你也可以做到這一點直接在ApplicationRoute

App.ApplicationRoute = Ember.Route.extend 
    setupController: (controller, model) -> 
    controller.set('title', 'My App') 

(見fiddle

0

OK了這個小句似乎是很重要的位置:

的索引控制器是該指數模板

所以{{title}}必須是在索引模板開始上下文:

script(type="text/x-handlebars") 

    <nav> 
    {{#linkTo "index"}}Index{{/linkTo}} 
    {{#linkTo "about"}}About{{/linkTo}} 
    {{#linkTo "favorites"}}Favorites{{/linkTo}} 
    </nav> 
    {{outlet}} 

script(type="text/x-handlebars", data-template-name="index") 
    <h1>{{title}}</h1>