我在应用程序控制器上设置了这些属性
monthToParse: null,
yearToParse: null,
fullDateToParse: function() {
// set array to month names
var monthNames = [ "January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December" ];
// set a variable to a new date object
var date = new Date();
// set the month to the previous month and return that
date.setMonth(date.getMonth() - 1);
// set the controller properties for use in other parts of the app
this.set('monthToParse', monthNames[date.getMonth()]);
this.set('yearToParse', date.getFullYear());
return this.get('monthToParse') + ' ' + this.get('yearToParse');
}.property('monthToParse', 'yearToParse'),
他们在我的application.hbs中工作。
但我还需要在渲染的视图布局文件中访问它们。
在index.hbs中,我渲染了一堆像这样的页面......
{{render "page-01"}}
{{render "page-02"}}
{{render "page-03"}}
...
并且每个都有一个视图文件,告诉它使用像这样的页面布局文件
import Ember from 'ember';
export default Ember.View.extend({
layoutName: 'page'
});
但是当我尝试使用这种技术引用应用程序属性时,在每个page.hbs文件中
import Ember from 'ember';
export default Ember.Controller.extend({
needs: 'application'
});
<p>{{controllers.application.fullDateToParse}}</p>
我首先想到的是,这些页面使用的page.hbs布局文件可能没有正确连接到控制器?或者也许嵌套的布局和我渲染它的方式都是关闭的。
答案 0 :(得分:0)
我相信通过致电{{render 'page-01'}}
,您告诉Ember使用page-01
控制器呈现page-01
模板。您可以使用Ember inspector查找。
您可能能够以某种方式修复此问题,但更好的解决方案是将您的网页设置为components,并明确传递其依赖项:
{{x-page fullDate=fullDateToParse}}
然后,在您的x-page
组件模板中,您可以使用
{{fullDate}}
注意,根据应用中page
的实际情况,组件的名称可能比x-page更好