Ember:部分视图中没有控制器属性 - 我做错了什么?

时间:2013-08-06 16:01:05

标签: ember.js

参见JSFiddle:http://jsfiddle.net/cyclomarc/aYmuJ/3/

我在应用程序控制器中设置了一个属性,并希望在局部视图中显示该属性。这似乎不起作用。我可以在模板中访问该属性,但不能在模板中呈现的局部视图中访问..

的index.html

<script type="text/x-handlebars">
    <h3>Ember access to controller properties</h3>
    {{#linkTo 'about'}}About{{/linkTo}} <br><br>
    {{outlet}} 
</script>

<script type="text/x-handlebars" data-template-name="about">
    Access to property in index template: <br>
    <b>{{controllers.application.applicationVersion}}</b> 
    <br><br>     
    {{render "_footer"}}
</script>

<script type="text/x-handlebars" data-template-name="_footer">
    Footer text (partial view) with a controller property:<br>
    <b>{{controllers.application.applicationVersion}} MISSING</b>
</script>

app.js

var App = Ember.Application.create({});

App.Router.map(function () {
  this.resource('about', { path: "/about" });
});

App.IndexRoute = Ember.Route.extend({
  redirect: function () {
    this.transitionTo('about');
  }
});

App.ApplicationController = Ember.Controller.extend({
  //Set some properties
  applicationVersion: "1.0.0"
});

App.AboutController = Ember.Controller.extend({
  needs: "application"
});

1 个答案:

答案 0 :(得分:3)

render查看助手拥有您自己的上下文。 要在其他模板中使用当前上下文,请使用partial视图帮助程序。

{{partial "footer"}}

当您使用render时,会创建一个名为generated _footer controller的新控制器。

使用partial将保留绑定到调用部分模板

的模板的控制器

由于您在about controller中使用了needs,因此您在新生成的控制器中没有它。

这是sample