javascript - 如何在angularjs中使用另一个文件中定义的常量

标签 javascript angularjs angularjs-module

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

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

app.js

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


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

现在我想使用这些常量来定义其他文件中的 Controller 名称,例如controller.js。说明了我尝试过但对我不起作用的几种方法。

Controller .js

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

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

错误 -> 未捕获引用错误:未定义 CONTROLLER

即使我尝试在 Controller 中注入(inject)常量模块,也给出了相同的错误。

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

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

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

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

最佳答案

您的代码显示您已将 CONTROLLER 常量正确注入(inject)到 Controller 构造函数中。

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

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

话虽如此,除了 Controller 函数本身之外,您只能访问常量。 Controller 、服务、工厂等的名称必须是可访问的字符串,在注入(inject)常量之前情况并非如此。

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

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

我只能猜测您正在尝试执行此操作,因为您正在编写的 Controller 或指令将在整个 html 中的多个点被引用/使用。

关于javascript - 如何在angularjs中使用另一个文件中定义的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37200697/

相关文章:

javascript - 如何在 AngularJS 中循环数组时隐藏空值字段

angularjs - 为什么必须在配置 block 之前定义提供程序

javascript - AngularJS 如何添加多个依赖模块

javascript - 使用 NodeJS 和 FFMpeg Fluent Api 的视频字幕

javascript - 是否可以添加一个带有端口的pushEndpoint?

javascript - AngularJS - Controller 资源调用不将参数传递给服务工厂?

javascript - JS 无法识别 Angular Controller 对象中的变量

angularjs - AngularJS 中的模块和 namespace /名称冲突

javascript - 如何从 500 个可能的问题中选出 30 个问题

javascript - Web Push 重新订阅 push manager chrome