2013-04-25 5 views
0

Я пытаюсь получить example из Руководства Ember работать, но я не понимаю:Ember маршрутизатор и контроллер

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

Вы устанавливаете title в IndexController, но, похоже, ваша температура Позднее не шаблон 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

Ок это маленькое предложение представляется важным здесь:

IndexController является исходным контекстом для шаблона индекса

Так {{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> 
Смежные вопросы