1

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

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

索引.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>

应用程序.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"
});
4

1 回答 1

3

render视图助手有你自己的上下文。要在其他模板中使用当前上下文,请使用partial视图助手。

{{partial "footer"}}

当您使用render新的控制器时,会创建一个,在这种情况下名为generated _footer controller.

使用partial将保留绑定到调用部分模板的模板的控制器

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

这是一个示例

于 2013-08-06T16:09:22.773 回答