Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 余烬路由模型中的承诺未解析/更新_Javascript_Ember.js - Fatal编程技术网

Javascript 余烬路由模型中的承诺未解析/更新

Javascript 余烬路由模型中的承诺未解析/更新,javascript,ember.js,Javascript,Ember.js,我正在使用Ember Simple Auth和一个注入应用程序控制器的服务来跟踪当前登录的用户。通过执行以下操作,我可以在我的应用程序模板中为当前登录的用户使用{{accountName}: //controllers/applications.js import Ember from 'ember'; export default Ember.Controller.extend({ session: Ember.inject.service(), userFromSession: E

我正在使用Ember Simple Auth和一个注入应用程序控制器的服务来跟踪当前登录的用户。通过执行以下操作,我可以在我的应用程序模板中为当前登录的用户使用
{{accountName}

//controllers/applications.js
import Ember from 'ember';

export default Ember.Controller.extend({
  session: Ember.inject.service(),
  userFromSession: Ember.inject.service('session-user'),
  accountName: Ember.computed('session.data.authenticated.userId', function(){
    this.get('userFromSession.user').then((user)=>{
      if (Ember.isEmpty(user.get('company'))) {
        this.set('accountName', user.get('firstName') + ' ' + user.get('firstName'));
      } else {
        this.set('accountName', user.get('company.name'));
      }
    });
  })
});
//services/session-user.js
import Ember from 'ember';
import DS from 'ember-data';

const { service } = Ember.inject;

export default Ember.Service.extend({
  session: service('session'),
  store: service(),

  user: Ember.computed('session.data.authenticated.userId', function() {
    const userId = this.get('session.data.authenticated.userId');
    if (!Ember.isEmpty(userId)) {
      return DS.PromiseObject.create({
        promise: this.get('store').find('user', userId)
      });
    }
  })
});
//routes/opportunities/index.js
import Ember from 'ember';

export default Ember.Route.extend({
  sessionUser: Ember.inject.service('session-user'),
  model: function(){
    this.get('sessionUser.user').then((user)=>{
      let companySlug = user.get('company.slug');
      console.log(companySlug);
      return this.store.findRecord('company', companySlug);
    });
  }
});
我的
会话用户
服务如下所示:

//controllers/applications.js
import Ember from 'ember';

export default Ember.Controller.extend({
  session: Ember.inject.service(),
  userFromSession: Ember.inject.service('session-user'),
  accountName: Ember.computed('session.data.authenticated.userId', function(){
    this.get('userFromSession.user').then((user)=>{
      if (Ember.isEmpty(user.get('company'))) {
        this.set('accountName', user.get('firstName') + ' ' + user.get('firstName'));
      } else {
        this.set('accountName', user.get('company.name'));
      }
    });
  })
});
//services/session-user.js
import Ember from 'ember';
import DS from 'ember-data';

const { service } = Ember.inject;

export default Ember.Service.extend({
  session: service('session'),
  store: service(),

  user: Ember.computed('session.data.authenticated.userId', function() {
    const userId = this.get('session.data.authenticated.userId');
    if (!Ember.isEmpty(userId)) {
      return DS.PromiseObject.create({
        promise: this.get('store').find('user', userId)
      });
    }
  })
});
//routes/opportunities/index.js
import Ember from 'ember';

export default Ember.Route.extend({
  sessionUser: Ember.inject.service('session-user'),
  model: function(){
    this.get('sessionUser.user').then((user)=>{
      let companySlug = user.get('company.slug');
      console.log(companySlug);
      return this.store.findRecord('company', companySlug);
    });
  }
});
现在,用户有了公司,公司就有了机会。我想根据当前登录的用户检索公司商机。我该怎么做?在我的
opportunities
路线中,我尝试了以下几点:

//controllers/applications.js
import Ember from 'ember';

export default Ember.Controller.extend({
  session: Ember.inject.service(),
  userFromSession: Ember.inject.service('session-user'),
  accountName: Ember.computed('session.data.authenticated.userId', function(){
    this.get('userFromSession.user').then((user)=>{
      if (Ember.isEmpty(user.get('company'))) {
        this.set('accountName', user.get('firstName') + ' ' + user.get('firstName'));
      } else {
        this.set('accountName', user.get('company.name'));
      }
    });
  })
});
//services/session-user.js
import Ember from 'ember';
import DS from 'ember-data';

const { service } = Ember.inject;

export default Ember.Service.extend({
  session: service('session'),
  store: service(),

  user: Ember.computed('session.data.authenticated.userId', function() {
    const userId = this.get('session.data.authenticated.userId');
    if (!Ember.isEmpty(userId)) {
      return DS.PromiseObject.create({
        promise: this.get('store').find('user', userId)
      });
    }
  })
});
//routes/opportunities/index.js
import Ember from 'ember';

export default Ember.Route.extend({
  sessionUser: Ember.inject.service('session-user'),
  model: function(){
    this.get('sessionUser.user').then((user)=>{
      let companySlug = user.get('company.slug');
      console.log(companySlug);
      return this.store.findRecord('company', companySlug);
    });
  }
});
在我的模板中使用
{{model.opportunities}}
时,它只是保持空白,看起来承诺永远不会解决。但是,我可以在Ember Inspector中看到填充的数据,以及控制台日志的预期输出。此外,当我执行以下操作时,效果很好:

//routes/opportunities/index.js
import Ember from 'ember';

export default Ember.Route.extend({
  model: function(){
    let companySlug = 'known-company-slug';
    return this.store.findRecord('company', companySlug);
  }
});

这意味着问题在于模型由于某种原因没有解析/更新。我到底做错了什么?

好的,所以当我已经可以通过
sessionUser
服务访问公司模型时,我正在尝试获取该模型

//routes/opportunities/index.js
import Ember from 'ember';

export default Ember.Route.extend({
  sessionUser: Ember.inject.service('session-user'),
  model: function(){
      return this.get('sessionUser.user').then(user => user.get('company'));
  }
});