AngularJS:在控制器内部使用工厂

AngularJS : Use factory inside a controller

本文关键字:工厂 内部 控制器 AngularJS      更新时间:2023-09-26

我使用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工厂。

您的工厂应该使用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');

告诉"myApp.view1"使用"myApp"。

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