如何在Ember中导入全局变量?

问题描述 投票:0回答:1

我是Ember的新手,正在尝试使用config /环境文件中的全局变量,然后将其导入到多个适配器和模型中。我需要在一个地方更改变量,而不是编辑每个文件。在这种情况下,全局变量是带有api服务器地址的字符串。该变量名为apiRoot。我尝试使用以下配置,但是它不起作用。请告诉我需要做什么,如果这在Ember中可行,或者还有另一种方法?感谢您的帮助!

环境文件:

'use strict';

module.exports = function(environment) {
  let ENV = {
    modulePrefix: 'front',
    environment,
    rootURL: '/',
    locationType: 'auto',
    EmberENV: {
      FEATURES: {
      },
      EXTEND_PROTOTYPES: {
        Date: false
      }
    },

    APP: {
    }
  };

  if (environment === 'development') {
  }

  if (environment === 'test') {
    ENV.locationType = 'none';
    ENV.APP.LOG_ACTIVE_GENERATION = false;
    ENV.APP.LOG_VIEW_LOOKUPS = false;

    ENV.APP.rootElement = '#ember-testing';
    ENV.APP.autoboot = false;
  }

  if (environment === 'production') {
  }

  ENV.apiRoot = 'http://localhost:5555/api';

  return ENV;
};

适配器:

import RESTAdapter from '@ember-data/adapter/rest';
import ENV from '../../config/environment';

export default RESTAdapter.extend({
  host: ENV.apiRoot,
  pathForType() {
    return "posts";
  }
});
javascript ember.js ember-data ember-cli
1个回答
0
投票

问题是您的相对路径可能指向/config/environment文件夹的app文件outside。但是它应该引用app文件夹中的config/environment,该文件在您的文件系统中不存在

原因是您没有从文件系统导入config/environment文件。因为该文件在浏览器中不存在。相反,ember-cli将在build time期间execute该文件,并仅将生成的JSON发送到您的浏览器,使其在config/environment可用。但是对于浏览器中的所有路径,app文件夹是项目的root。您无法导入app文件夹之外的内容。

因此config/environment产生的ember-cli JSON基本上将被移到app文件夹中。

© www.soinside.com 2019 - 2024. All rights reserved.