我正在遵循官方AngularJS文档中的Tutorial,我想知道是否可以向Phone工厂添加另一个函数,以便更好地组织代码。他们声明了一个“查询”函数,但是如果我想添加一个引用不同url...say phone2/:phoneName.json的查询函数怎么办?
工厂声明:
var phonecatServices = angular.module('phonecatServices', ['ngResource']);
phonecatServices.factory('Phone', ['$resource',
function($resource){
return $resource('phones/:phoneId.json', {}, {
query: {method:'GET', params:{phoneId:'phones'}, isArray:true}
});
}]);
我尝试了许多方法,但似乎都不起作用:
这个answer看起来是正确的,但是每个工厂函数的语法与上面的工厂并不完全匹配。
大致是这样的:
phonecatServices.factory('Phone', ['$resource',
function($resource){
return {
query: ...
query2: ...
}
}]);
发布于 2015-04-06 16:51:36
一个这样的例子是:Link for Demo
angular.module('services', []).factory('factoryName', ["$filter",
function($filter) {
var method1Logic = function(args) {
//code
};
var method2Logic = function(args) {
//code
};
return {
method1: method1Logic,
method2: method1Logic
};
}
]).controller('MainController', ["$scope", "$rootScope", "$filter", "factoryName", function ($scope, $rootScope, $filter,factoryName) {
$scope.testMethod1 = function(arg){
$scope.val1 = factoryName.method1(arg);
};
$scope.testMethod2 = function(arg){
$scope.val2 = factoryName.method2(arg);
};
}]);
甚至还有一个更好的版本:References
function AnotherService () {
var AnotherService = {};
AnotherService.someValue = '';
AnotherService.someMethod = function () {
};
return AnotherService;
}
angular
.module('app')
.factory('AnotherService', AnotherService);
发布于 2014-02-21 11:08:49
这是服务代码:
myServices.factory('Auth', ['$resource',
function($resource){
return {
Login: $resource(serviceURL + 'login', {}, { go: { method:'POST', isArray: false }}),
Logout: $resource(serviceURL + 'logout', {}, { go: { method:'POST', isArray: false }}),
Register: $resource(serviceURL + 'register', {}, { go: { method:'POST', isArray: false }}),
};
}
]);
在我的控制器中,我只需要添加go()函数调用来让它工作:
Auth.Login.go({ username: $scope.username, password: $scope.password },
为了清楚起见,我想我可以在方法后命名go函数,并将其命名为"post()“。
发布于 2021-04-29 19:18:57
是的,当然,你可以在一个对象中有多个函数。唯一需要注意的是你的服务应该返回一个对象。只要遵循object
的语法,就可以在该对象中包含所有有效的javascript成员。
所以下面的内容是可能的
phonecatServices.factory('Phone', ['$resource',
function($resource){
return {
query: ... , // NOTICE THE COMMA HERE
query2: ...
}
}]);
必须缺少用于分隔对象键值的comma (,)
。
https://stackoverflow.com/questions/21821150
复制相似问题