[英]ember-responsive, {{media}} in template.hbs is undefined if I use media: Ember.inject.service() in route. Why?
我正在使用https://github.com/freshbooks/ember-sensitive 。
如果我在以下路徑中未定義template / route.hbs中的 {{media}}
該路徑為media: Ember.inject.service()
。
相反,如果我重新創建默認的initializers / sensitive.js文件,則一切正常。
在路由中,它僅在以下代碼中也可與服務注入一起使用
activate() {
console.log(this.get('media.isMobile'));
}
它相應地記錄是或否。
但是在template.hbs中,此代碼為: {{log media}
}或{{log media.classNames}}
或
{{#if media.isDesktop}}
Desktop view!
{{/if}}
在我使用初始化程序而不是僅在此路由中僅注入服務之前,始終是未定義或不顯示任何內容。
為什么?
模板將僅通過控制器拉動屬性。 如果要在模板中顯示或使用任何屬性,則必須在控制器文件(本例中為controllers/route.js
中提及該屬性。 嘗試類似的東西,
media: Ember.inject.service()
控制器中的media: Ember.inject.service()
,您可以在模板中使用media
服務。 對於初始化程序,您可能也已經使用application.inject('controller', 'media', 'service:media');
注入了控制器application.inject('controller', 'media', 'service:media');
這就是在這種情況下可以訪問媒體服務的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.