参见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"
});
答案 0 :(得分:3)
render
查看助手拥有您自己的上下文。
要在其他模板中使用当前上下文,请使用partial
视图帮助程序。
{{partial "footer"}}
当您使用render
时,会创建一个名为generated _footer controller
的新控制器。
使用partial
将保留绑定到调用部分模板
由于您在about controller中使用了needs
,因此您在新生成的控制器中没有它。
这是sample