Ember Router and Controller
Я пытаюсь получить пример из Ember Guide, но я не понимаю:
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>
Как я понимаю в примере, он должен отображать заголовок при достижении страницы индекса, но ничего не происходит. Так что некоторые могут увидеть, что здесь не так.
2 ответа
Вы устанавливаете title
недвижимость в IndexController
, но кажется, что ваш шаблон не index
шаблон, а скорее application
шаблон. Вы можете изменить свой IndexRoute
использовать controllerFor
так что вы можете получить доступ к ApplicationController
(автоматически сгенерировано) и установите значение для свойства, подобное этому:
App.IndexRoute = Ember.Route.extend
setupController: (controller) ->
@controllerFor('application').set('title', 'My App')
(см. скрипку)
Или вы можете сделать это прямо в ApplicationRoute
:
App.ApplicationRoute = Ember.Route.extend
setupController: (controller, model) ->
controller.set('title', 'My App')
(см. скрипку)
Хорошо, это маленькое предложение кажется здесь важным:
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>