从run.schedule获取控制器var

时间:2014-10-01 13:17:45

标签: javascript jquery ember.js

我有一个EmberJS应用程序。我想制作类似全局变量/函数的东西,它将检测用户是否从台式计算机或移动设备访问了应用程序。 在主控制器(controller / application.js)中,我有一个这样的代码:

    Ember.Controller.extend({
       currentUser: 0,
       lastRemoteId: 0
    })

我需要添加一个像这样的变量或函数:

    Ember.Controller.extend({
       ...,
       isMobile: function(){
          [code which detects if user visited from mobile device or not]
       }
    })

在didInsertElement里面的主视图(views / application.js)中我想得到这个isMobile var。当我尝试执行this.controllerFor('application')时,我收到一个错误:" undefined不是函数"。这样做是否正确?

2 个答案:

答案 0 :(得分:1)

应用程序控制器在应用程序视图中设置为属性,您可以使用getter访问它。

var appController = this.get('controller');

答案 1 :(得分:0)

问题是这样解决的: 我在控制器中添加了代码:

Ember.Controller.extend({
    ... // some properties,
    mobileDetect: function () {
        return new MobileDetect(window.navigator.userAgent);
    }.property(),
    actions: {
        ...
    }
}

didInsertElement内,我有这样的代码:

this.get('controller.mobileDetect')

我将收到mobileDetect个对象并能够执行其方法。现在它可以工作