参见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
,因此在新生成的控制器中没有它。
这是一个示例