我对角度很新,我想了解工厂方法。
我尝试以不同的方式为我的应用创建工厂方法。但没有什么对我有用 - 为什么?
这也是创建工厂方法的正确方法,我们有多种方法来创建工厂方法吗? - 如果是这样,请说明他们的优点和缺点?
这是我的尝试:
POST /upload/drive/v2/files?uploadType=multipart&access_token=ya29.CjAmA2j6eonCiROaNum-V1cWdFVH2vXpNiXAsXK6iLPu7K54tD4uNsmH-eEycMcnaBE HTTP/1.1
Host: www.googleapis.com
Accept: */*
Content-Type: multipart/related; boundary="foo_bar_baz"
Content-Length: 150
答案 0 :(得分:2)
以下是你的掠夺者的a forked version
- 你的工厂必须退货。查看plunker中的return语句
- 您应该在控制器
MainCtrl
中注入工厂,以便初始化工厂。这就是console.log
未被打印的原因。
工厂/服务的最佳使用
根据下面广泛使用的John Papa's angular 1 style guide是最佳方法。在style guide
上阅读有关角度指南的更多信息
(function() {
'use strict';
angular
.module('app')
.factory('logger', logger);
function logger() { }
})();
答案 1 :(得分:1)
使用工厂,您可以创建对象。一个可以帮助您入门的简单示例是:
angular
.module('myApp', [])
.factory('Post', ['$http', function($http) {
var service = {
all: all,
get: get
};
return service;
function all() {
return $http
.get('api/posts/')
.then(function(response){
return response.data;
});
}
}
function get(id) {
return $http
.get('api/posts/' + id);
.then(function(response){
return response.data;
});
}
}
}])
.controller('PostsController', ['Post', function(Post){
var self = this;
self.posts = Posts.get();
}]);
所以检查我可以简单地将它注入我的控制器,然后轻松调用它的方法。这样就会出现问题分离,您可以将所有这些逻辑与控制器和组件保持一致。有一篇关于工厂和服务的文章也很here
答案 2 :(得分:0)
你可以到这里的最佳例子..
答案 3 :(得分:0)
工厂用于创建服务。服务是java脚本函数一旦我们定义了工厂,我们就可以在应用程序的任何地方使用它。 示例:
<div ng-app="myApp" ng-controller="Ctrl">
<h3>{{hello}}</h3>
</div>
<script>
var app = angular.module('myApp', []);
app.factory("test",function(){
var fact={} //Creating Object
fact.love=function(){ //Access love method through the fact object
var serve="This is test for factory";
return serve;
}
return fact; //return object
})
app.controller('Ctrl', function($scope, test) {
$scope.hello=test.love(); //assign the test factory function in ctrler
});
</script>