如何在angularjs

时间:2016-05-13 03:20:46

标签: javascript angularjs angularjs-module

我在StackOverFlow中看到过与此相关的几个问题,但无法找到正确的答案。

在我的app.js文件中说我已经定义了一个基本上有控制器名称的常量对象。当我使用" ui-router"我想将控制器附加到状态更改的视图。

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();
}]);

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文件中定义控制器名称时,使用这些常量在状态更改期间将控制器附加到视图。 我想重用那些常量来定义控制器名称。

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

1 个答案:

答案 0 :(得分:0)

您的代码显示您已将CONTROLLER常量正确地注入控制器构造函数。

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

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

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

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

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

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