在我的应用程序中,我有 2 个几乎相同的控制器。很多功能都是一样的,所以我想制作它们的原型。这是控制器 #1:
c2gcontroller.js
angular.module('c2gyoApp')
.controller('C2gCtrl', function($scope) {
// some unique stuff
$scope.feeDay = 59;
...
// the identical functions
$scope.getMinutes = function(minutes) {
var duration = moment.duration(minutes, 'm');
return duration.minutes();
};
...
});
和控制器#2:
c2gbcontroller.js
angular.module('c2gyoApp')
.controller('C2gbCtrl', function($scope) {
// some unique stuff
$scope.feeDay = 89;
...
// the identical functions
$scope.getMinutes = function(minutes) {
var duration = moment.duration(minutes, 'm');
return duration.minutes();
};
...
});
我试过投入$scope.getMinutes
工厂:
smfactory.js
angular.module('c2gyoApp')
.factory('smfactory', function() {
return {
getHours: function(minutes) {
var duration = moment.duration(minutes, 'm');
return Math.ceil(duration.asHours() % 24);
}
};
});
我已经注入smfactory
c2gcontroller.js
c2gcontroller.js(尝试#1)
angular.module('c2gyoApp')
.controller('C2gCtrl', function($scope, smfactory) {
...
// the identical functions
$scope.getHours = smfactory.getHours(minutes);
...
});
这会产生一个错误,即分钟未定义
line 33 col 42 'minutes' is not defined.
所以我尝试了:
c2gcontroller.js(尝试#2)
angular.module('c2gyoApp')
.controller('C2gCtrl', function($scope, smfactory) {
...
// the identical functions
$scope.getMinutes = function(minutes) {
return smfactory.getHours(minutes);
};
...
});
这不会产生错误,但我的应用程序确实变得无响应。现在基本$scope.getMinutes
不返回任何东西。
我已经阅读并观看了很多关于 AngularJS 服务、工厂、提供者的信息,但我不知道从这里去哪里。c2gcontroller.js
原型和的正确方法是c2gbcontroller.js
什么?