Ember.js 未捕获类型错误:无法读取属性';登录';未定义的

Ember.js 未捕获类型错误:无法读取属性';登录';未定义的,ember.js,firebase,emberfire,Ember.js,Firebase,Emberfire,我正试图用Firebase和Ember建立OAuth。出于某种原因,它正在返回错误 未捕获的TypeError:无法读取未定义的属性“login” 我在想用户可能没有定义,但我已经在模型中定义了它: App.User = DS.Model.extend({ username: DS.attr('string'), }); 然后我想可能是“会话”没有定义——我用调试器查找&它说这是一个未知的mixin var session = Ember.Object.extend({

我正试图用Firebase和Ember建立OAuth。出于某种原因,它正在返回错误

未捕获的TypeError:无法读取未定义的属性“login”

我在想用户可能没有定义,但我已经在模型中定义了它:

App.User = DS.Model.extend({
    username: DS.attr('string'),
});
然后我想可能是“会话”没有定义——我用调试器查找&它说这是一个未知的mixin

var session = Ember.Object.extend({  
        ref: new Firebase("https://glowing-fire.firebaseio.com/"),

        addFirebaseCallback: function() {
        var session = this;

        this.get("ref").onAuth(function(authData) {
          if (authData) {
            session.set("isAuthenticated", true);
          } else {
            session.set("isAuthenticated", false);
          }
        });
    }.on("init"),

    login: function() {
        return new Promise(function(resolve, reject) {
          this.get("ref").authWithOAuthPopup("facebook", function(error, user) {
            if (user) {
              resolve(user);
            } else {
              reject(error);
            }
          });
        });
    },

    currentUser: function() {
        return this.get("ref").getAuth();
    }.property("isAuthenticated")
});




App.Session = Ember.Object.extend({
    initialize: function(container, app) {
        app.register("session:main", session);
        app.inject("controller", "session", "session:main");
        app.inject("route", "session", "session:main");
    }
});

我真的很感激你的帮助

问题可能是您正试图访问注入的属性,但从未调用执行注入的代码。第页介绍了注入属性的推荐方法

更具体地说,下面的示例(来自Ember.js网站)应该会有所帮助

使用应用程序初始值设定项:

App = Ember.Application.extend();

App.Logger = Ember.Object.extend({
  log: function(m) {
    console.log(m);
  }
});

App.IndexRoute = Ember.Route.extend({
  activate: function(){
    // The logger property is injected into all routes
    this.logger.log('Entered the index route!');
  }
});

Ember.Application.initializer({
  name: 'logger',

  initialize: function(container, application) {
    application.register('logger:main', App.Logger);
    application.inject('route', 'logger', 'logger:main');
  }
});

App.create();
或直接在应用程序上:

App = Ember.Application.create();

App.register('logger:main', {
  log: function(m) {
    console.log(m);
  }
}, { instantiate: false });

App.inject('route', 'logger', 'logger:main');

请在回答中包含链接页面中的相关信息。链接会随着时间的推移而消失。谢谢,我会试试这个!
App = Ember.Application.create();

App.register('logger:main', {
  log: function(m) {
    console.log(m);
  }
}, { instantiate: false });

App.inject('route', 'logger', 'logger:main');