如何处理在emberjs中显示动态全局属性

时间:2013-04-10 14:49:14

标签: javascript templates ember.js

我希望有一个标题标题可以根据正在使用的控制器进行更改。

这是我的申请模板:

<div class="container">
  <div class="content">
    <div class="page-header">
      {{#if pageTitle}}
        <h1>{{pageTitle}}</h1>
      {{/if}}
    </div>
    <div class="span12">
      {{outlet}}
    </div>
  </div>
</div>

如果设置了页面标题,则应显示它。

现在说我有一个我试过的帖子控制器:

App.PostsController = Ember.ArrayController.extend({
  pageTitle: 'Posts'
});

哪个不起作用。

我也试过在路线中设置它:

App.PostsRoute = Ember.Route.extend({
  model: function() {
    return App.Post.find();
  },
  setupController: function(controller) {
    controller.set('pageTitle', 'Posts');
  }
});

我确信这很简单,我只是没有看到做我想做的最佳方式。

任何帮助都会很棒,谢谢!

1 个答案:

答案 0 :(得分:4)

您需要在pageTitle上设置ApplicationController值,因为该值在插座外部使用,它的上下文是此案例应用程序中最外层的控制器。

App.PostsRoute = Ember.Route.extend({
  model: function() {
    return App.Post.find();
  },
  setupController: function(controller) {
    this.controllerFor("application").set('pageTitle', 'Posts');
  }
});