我有一个像这样的控制器功能:
$scope.localTimezone = function (userTimezone,datetime) {
// ....
return data;
}
将它作为工厂模块的正确方法是什么?我尝试了以下但是它给出了错误。
angular.module('localTimezone', [])
.factory('localTimezone',function(userTimezone,datetime) {
// ...
return data;
});
angular.module('app', ['localTimezone'])
.controller('tasksController',function ($scope,localTimezone) {
// ...
});
我错过了一些概念或逻辑。任何人都可以指出我正确的方向吗?
答案 0 :(得分:2)
CONTROLLER示例 坏:
function MainCtrl () {
this.doSomething = function () {
};
}
angular
.module('app')
.controller('MainCtrl', MainCtrl);
好:
function MainCtrl (SomeService) {
this.doSomething = SomeService.doSomething;
}
angular
.module('app')
.controller('MainCtrl', MainCtrl);
工厂示例 坏:
function AnotherService () {
var someValue = '';
var someMethod = function () {
};
return {
someValue: someValue,
someMethod: someMethod
};
}
angular
.module('app')
.factory('AnotherService', AnotherService);
好:
function AnotherService () {
var AnotherService = {};
AnotherService.someValue = '';
AnotherService.someMethod = function () {
};
return AnotherService;
}
angular
.module('app')
.factory('AnotherService', AnotherService);
有关详情指南,请浏览此博客: Opinionated AngularJS styleguide for teams
答案 1 :(得分:0)
这是一个基于假设的工作代码示例userTimezone和datetime是localTimezone模块的一部分服务。
以下内容已被修改
代码:
angular.module('app', ['localTimezone']);
angular.module('localTimezone', []).factory('localTimezone',
function(userTimezone, datetime) {
var data = 'hello';
return { data: data } ;
});
angular.module('localTimezone').service('userTimezone', function() {
});
angular.module('localTimezone').service('datetime', function() {
});
angular.module('app').controller('tasksController',function ($scope,localTimezone) {
});
Codepen:http://codepen.io/anon/pen/wijmb(控制台中没有出现错误)
请查看http://angular-tips.com/blog/2013/08/understanding-service-types,了解有关Angular中不同服务类型的信息。