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

标签 javascript ember.js ember-data ember-cli

我是 Ember 新手,正在尝试在配置/环境文件中使用全局变量,然后将其导入到多个适配器和模型中。我需要它来更改一个地方的变量,而不是编辑每个文件。 在本例中,全局变量是一个包含 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";
  }
});

最佳答案

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

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

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

关于javascript - 如何在 Ember 中导入全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60687181/

相关文章:

javascript - 如何在 Ember js 中获取 currentRouteName 的动态部分

pagination - 使用 ember-data RESTAdapter 返回分页数据的正确模式?

javascript - 如何将变量传递给 HTML 中的 JavaScript 函数?

javascript - 在循环中添加带有参数的事件监听器

javascript - MySQL SET 仅插入列表中的第一项

Ember.js:基于模型属性值的动态宽度

javascript - Moment.js fromNow() 过早几秒

javascript - 为副作用而导入的 ES6 模块的公认做法?

javascript - moment.js 时刻未定义

ember.js - EmberJS、EmberJS/Data 和 Sproutcore-Datastore