AngularJS:在控制器内使用工厂

时间:2015-06-23 13:31:46

标签: javascript angularjs angularjs-service angularjs-controller

我使用angularjs种子并尝试编写一个简单的工厂并将其插入控制器。

我有一个Row工厂定义

angular.module('myApp')
.factory('Row', [ function () {
 return 'some string';
 ); 
}])

我的view1控制器里面有

'use strict';

angular.module('myApp.view1', ['ngRoute'])

.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/view1', {
templateUrl: 'view1/view1.html',
controller: 'View1Ctrl'
});
}])

.controller('View1Ctrl', ['$scope', 'Row', function($scope, Row) {
}]);

我收到一个错误,它没有找到Row工厂。

2 个答案:

答案 0 :(得分:1)

您的工厂应使用myApp.view1模块,因为myApp模块未定义。

angular.module('myApp.view1')
.factory('Row', [function() {
    return 'some string';
}])

<强>更新

如果您想创建一个新模块并将工厂附加到它,那么您应该创建一个新模块并在[]数组中包含先前的依赖项。

angular.module('myApp', ['myApp.view1'])
.factory('Row', [function() {
    return 'some string';
}])

注意:应该在工厂JS之后加载这个JS,以使myApp.view1可用。

好像你只返回工厂的字符串值。我说而不是工厂,你可以constant / value。从而使constant成为首选方式。因为它也可以在配置阶段使用。

angular.module('myApp.view1')
.constant('Row', 'some string');

答案 1 :(得分:0)

告诉“myApp.view1”使用“myApp”。

angular.module('myApp.view1', ['ngRoute', 'myApp'])