簡體   English   中英

如果我在路由中使用媒體:Ember.inject.service(),則ember-sensitive,template.hbs中的{{media}}未定義。 為什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM