Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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 向Ember适配器添加动态变量?_Javascript_Ember.js - Fatal编程技术网

Javascript 向Ember适配器添加动态变量?

Javascript 向Ember适配器添加动态变量?,javascript,ember.js,Javascript,Ember.js,有一个我一直在努力解决的问题,我希望有人能给我一些启示 我有一个应用程序,它有两个主要根路径——一个用于租户,另一个用于内部管理员 我正在Ember中设置单独的适配器来处理不同的名称空间和路径。问题是,主租户路由在分支到特定资源之前包含租户的id,因此我希望该id包含在适配器的路径中,但无论我如何尝试,在适配器中定义id时,我似乎无法让Ember识别该id 内部管理适配器没有这个问题,因为资源分支之前的路径是静态的 这是我的适配器: import Ember from 'ember'; impo

有一个我一直在努力解决的问题,我希望有人能给我一些启示

我有一个应用程序,它有两个主要根路径——一个用于租户,另一个用于内部管理员

我正在Ember中设置单独的适配器来处理不同的名称空间和路径。问题是,主租户路由在分支到特定资源之前包含租户的id,因此我希望该id包含在适配器的路径中,但无论我如何尝试,在适配器中定义id时,我似乎无法让Ember识别该id

内部管理适配器没有这个问题,因为资源分支之前的路径是静态的

这是我的适配器:

import Ember from 'ember';
import { pluralize } from 'ember-inflector';
import { underscore } from 'ember-string';
import config from 'config/environment';
import DS from 'ember-data';
import ENV from 'config/environment';



export default DS.JSONAPIAdapter.extend({
  auth: Ember.inject.service('auth'),

  headers: Ember.computed('auth.authToken', function() {
    return {
      "Authorization": `Bearer ${this.get("auth").getAuthToken('user')}`,
    };
  }), 

  host: config.apiHost,
  namespace: ENV.version,

  pathForType: function(type) {
    var underscored = underscore(type);
    return pluralize(underscored);
  },

});
我想要的是:

ENV.version + '/tenant/' + :tenant_id + '/',
但我似乎无法让它发挥作用。我有一个可以从中获取租户id的服务:
app\u root/services/auth.js
。它看起来像:

import Ember from 'ember';

export default Ember.Service.extend({
    getTenantId(){
        return '1234';
    },
});
允许我将服务导入适配器吗?我尝试在适配器中创建一个函数来调用此服务并从中返回值,但每次都失败了。我还尝试导入服务,但也失败了。 我想知道是否有可能在一个余烬适配器中添加一个动态段?如果是这样,如何使其工作


提前感谢,

您已经在该适配器中使用了服务

你有没有试过这样的方法:

auth
可能是一个非常常见的名称,已经存在于其他一些软件包中,因此更喜欢“个人”名称,此处=>“租户”)

app\u root/services/tenant.js

import Ember from 'ember';

export default Ember.Service.extend({
    getTenantId(){
        return '1234';
    },
});
和您的适配器:

import Ember from 'ember';
import { pluralize } from 'ember-inflector';
import { underscore } from 'ember-string';
import config from 'config/environment';
import DS from 'ember-data';
import ENV from 'config/environment';



export default DS.JSONAPIAdapter.extend({
  tenant: Ember.inject.service(),
  // ...


  namespace: computed(/*'tenant.id'*/, function() {
    return `${ENV.version}/tenant/${this.get('tenant').getTenantId()}/`;
  }),

  // ...
});
PS:如果您将服务
my_service
导入密钥
my_service
,则无需指定您的服务名称:

tenant: Ember.inject.service()
// is equivalent to
tenant: Ember.inject.service('tenant')

// while
my_tenant_service: Ember.inject.service('tenant') // import 'tenant' service into 'my_tenant_service' key
// isn't equivalent to
my_tenant_service: Ember.inject.service() // import 'my_tenant_service' service into 'my_tenant_service' key

谢谢@Nathanguy-迫不及待想试试这个。感谢您提供有关服务命名的提示-这非常有意义!谢谢@Nathan-我必须找出计算函数的正确属性,但它成功了!