【问题标题】:How to use constants defined in one file in another in angularjs如何在angularjs中使用另一个文件中定义的常量
【发布时间】:2016-09-09 02:26:03
【问题描述】:

好吧,我在 StackOverFlow 中看到了几个与此相关的问题,但找不到正确的答案。

假设在我的 app.js 文件中,我定义了一个常量对象,它基本上具有控制器名称。当我使用“ui-router”时,我想将控制器附加到状态变化的视图。

app.js

var app = angular.module('myApp', ['ui.router']);


app.constant('CONTROLLER', {
    ONE: 'ControllerOne',
    TWO: 'ControllerTwo'
});

现在我想使用这些常量在其他文件中定义控制器名称,比如 controller.js。说明我尝试过但对我有用的几种方法。

controller.js

var app = angular.module('myApp', ['CONTROLLER']);

app.controller(CONTROLLER.ONE, ['$scope', 'myFactory', function ($scope, myFactory) {
    $scope.result = myFactory.someAPI();
}]);

ERROR -> Uncaught ReferenceError: CONTROLLER is not defined

即使我尝试在 Controller 中注入那个常量模块,也会出现同样的错误。

var app = angular.module('myApp', ['CONTROLLER']);

app.controller(CONTROLLER.ONE, ['$scope', 'myFactory', 'CONTROLLER', function ($scope, myFactory, CONTROLLER) {
    $scope.result = myFactory.someAPI();
}]);

我知道第二种方法是错误的。当我在我的主 app.js 文件中定义控制器名称并使用这些常量在状态更改期间将控制器附加到视图时。 我也想重用这些常量来定义控制器名称。

我可能做错了什么。有什么建议吗?

【问题讨论】:

    标签: javascript angularjs angularjs-module


    【解决方案1】:

    您的代码表明您已将 CONTROLLER 常量正确地注入到控制器构造函数中。

    var app = angular.module('myApp', ['CONTROLLER']);
    
    app.controller(CONTROLLER.ONE, ['$scope', 'myFactory', 'CONTROLLER', function ($scope, myFactory, CONTROLLER) {
        // use constant here
    }]);
    

    话虽如此,您只能从控制器函数本身访问常量。控制器、服务、工厂等的名称必须是可访问的字符串,在注入常量之前不是这种情况。

    您可以在 angular 之外使用普通的旧 JavaScript 对象来定义名称。

    var CONTROLLER = {
        ONE: 'ControllerOne',
        TWO: 'ControllerTwo'
    });
    

    我只能猜测您正在尝试这样做,因为您正在编写的控制器或指令将在整个 html 中的多个点被引用/使用。

    【讨论】:

    • 谢谢 Yeager,现在看起来不错。我是一名 Java 开发人员,不熟悉 JS 世界 - 有点担心以普通的旧 JS 方式定义常量,因为我听说过很多关于全局命名空间被污染的事情。
    • @APD “您可以使用 Angular 之外的普通旧 JavaScript 对象来定义名称。”我怎么做?我试过“import { CONTROLLER} from "./path/to/your/file"” 但我得到以下错误:错误:>>错误:由于解析错误而无法处理源>>'导入'和' export' 可能只与 'sourceType: module' 一起出现
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 2016-11-13
    • 1970-01-01
    相关资源
    最近更新 更多