Ember.js:无法访问注入的对象

塞缪尔·西格尔(Samuel Segal)

我创建了一个Session对象:

App.Session = Ember.Object.extend({
  user: null,
  userID: '',
});

我注入了这个对象:

Ember.Application.initializer({
name: 'login',
initialize: function (container, application) {
  App.register('session:main', App.Session, { instantiate: false, singleton: true }); 
  // Add `session` object to route to check user
  App.inject('route', 'session', 'session:main');
  // Add `session` object to controller to visualize in templates
  App.inject('controller', 'session', 'session:main');

  App.register('firebase:main', App.Firebase);
  // Add `session` object to route to check user
  App.inject('route', 'firebase', 'firebase:main');
  // Add `session` object to controller to visualize in templates
  App.inject('controller', 'firebase', 'firebase:main');
  }
});

我想按照以下步骤将userID属性设置为Session当前用户的ID:

Ember.Route.reopen({
  beforeModel: function (transition) {
    var isAuth = false;
    var user = '';
    var store = this.store;
    var _this = this;
    var firebase = new Firebase("https://dynamicslife.firebaseio.com");
    firebase.onAuth(function(authData) {
      if (authData) {
        isAuth = true;
        _this.session.userID = authData.id; //THIS OPERATIONS IS NOT WORKING!!!!!!
      } else {
        isAuth = false;
      }
    });

    // These routes you do not need to be logged in to access.
    var openRoutes = ['home','index','about','stories'];
    var testMode = false;
    if (testMode == false) {
    if (openRoutes.indexOf(transition.targetName) === -1 && isAuth === false) {
      console.log('Please login to access this information');
      this.transitionTo('stories');
    }  
  }
 }
});

在上面由标识的代码表达式中//THIS OPERATIONS IS NOT WORKING!!!!!!,,authData.id包含正确的ID值。但是,_this.session.userID仍然没有定义。

我尝试替换为_this.session.userID = authData.id;_this.session.set('userID', authData.id);但这给了我同样的错误。

我认为也许Session对象没有注入Ember.Route.reopen在这种情况下,如何从中访问Session对象Ember.Route.reopen

由于session.userID未定义,因此出现以下错误:

Error while processing route: statistics.index session is not defined ReferenceError: session is not defined

当Ember运行时:

App.StatisticsRoute = Ember.Route.extend({
  model: function() {
    return this.store.find('user', session.userID);
  },
});  
劲派2k

您告诉它不要实例化App.Session,这意味着它是您要使用的对象,但这class不是一个instance

App.register('session:main', App.Session.create(), { instantiate: false, singleton: true }); 

并且session存在于this路由中,而不存在于全局名称空间中。

App.StatisticsRoute = Ember.Route.extend({
  model: function() {
    return this.store.find('user', this.session.get('userID'));
  },
});  

而且您绝对应该使用二传手

 _this.session.set('userID', authData.id);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Ember.js:无法访问注入的对象

来自分类Dev

将服务注入Ember对象[不是Ember控制器]

来自分类Dev

Ember:访问Ember组件中的数据存储

来自分类Dev

Ember.js:如何从App对象获取对存储的访问

来自分类Dev

Ember.js:如何从App对象获取对存储的访问

来自分类Dev

将Ember模型设置为Ember对象

来自分类Dev

将Ember模型设置为Ember对象

来自分类Dev

无法安装Ember.js

来自分类Dev

Ember-CLI-> Heroku部署-无法访问公共/文件夹

来自分类Dev

Ember.js如何访问从Ember.Select中选择的整个对象?

来自分类Dev

Ember.js ember-plupload拖放

来自分类Dev

Ember.js ember-plupload拖放

来自分类Dev

遍历Ember对象

来自分类Dev

使用Ember对象的“需求”

来自分类Dev

遍历Ember对象

来自分类Dev

无法访问JS对象中的值

来自分类Dev

无法访问JS对象中的值

来自分类Dev

无法使用Ember筛选模型。在Ember.js中选择

来自分类Dev

使用需求将对象注入Ember.js中的其他对象

来自分类Dev

Ember JS深度链接

来自分类Dev

Ember-cli:如何在不将其注入html的情况下访问environment.js?

来自分类Dev

Ember CLI-注入服务

来自分类Dev

无法访问对象

来自分类Dev

访问和更新夹具Ember JS

来自分类Dev

如何使用Ember CLI在Ember中进行依赖项注入?

来自分类Dev

如何使用Ember CLI在Ember中进行依赖项注入?

来自分类Dev

ember js:#each显示子对象的内容

来自分类Dev

使用Mixins访问Ember Controller

来自分类Dev

Ember模板中的访问常量