Ember:控制器属性在部分视图中不可用 - 我做错了什么



参见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"
});

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

{{partial "footer"}}

使用render时,将创建一个新控制器,在本例中名为 generated _footer controller

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

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

这是一个示例

相关内容

最新更新