嗯,我在 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/