AngularJS中serivce,factory,provider的区别
2014-03-29 14:33
369 查看
From: http://blog.csdn.net/spy19881201/article/details/17070855
AngularJS实现注入服务的方法有5种方式:
decorator
constant
value
service
factory
provider
其中provider是一切方法的基础,有点类似于XMLHttpObject,在这个基础之上建立起来的,像jquery的$.ajax等等。
第一种方式:decorator
[javascript] view
plaincopyprint?
[javascript] view
plaincopyprint?
<div ng-controller="appCtrl">{{ content }}</div>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.value('profile', 'I\'am a angular developer.');
app.config(function ($provide) {
$provide.decorator('profile', function ($delegate) {
return $delegate + ' I like angularJS. So sorry, you are hacked!';
});
});
app.controller('appCtrl', ['$scope', 'profile', function ($scope, profile) {
$scope.content = profile;
}]);
</script>
第二种方式:constant
[javascript] view
plaincopyprint?
<div ng-controller="UsingConstantServiceCtrl">{{ magicNumber }},{{ bookTitle }}</div>
<div ng-controller="UsingValueServiceCtrl">{{ magicNumberFromService }}</div>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.constant('magicNumber', 42);//常量直接接作为服务
app.constant('magicNumber', 422);//TODO 重新赋值是无效的
app.constant('bookTitle', "Hitchhiker's Guide");
function UsingConstantServiceCtrl($scope, magicNumber, bookTitle) {
$scope.magicNumber = magicNumber;
$scope.bookTitle = bookTitle;
}
(function () {
var existingServiceInstance = {
getMagicNumber: function () {
return 42; // Note that we are using an "hard-coded" magic number
}
};
app.value('magicNumberService', existingServiceInstance);
}());
function UsingValueServiceCtrl($scope, magicNumberService) {
$scope.magicNumberFromService = magicNumberService.getMagicNumber();
}
</script>
第三种方式:value
[javascript] view
plaincopyprint?
<pre code_snippet_id="92094" snippet_file_name="blog_20131202_3_1841481" name="code" class="javascript"><div ng-controller="appCtrl">{{ title }}</div>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.config(function ($provide) {
$provide.value('title', 'my Title')
});
app.controller('appCtrl', ['$scope', 'title', function ($scope, title) {
$scope.title = title;
}]);
</script></pre><br>
<br>
<pre></pre>
<br>
<br>
第四种方式:service
[javascript] view
plaincopyprint?
<pre code_snippet_id="92094" snippet_file_name="blog_20131202_4_2538810" name="code" class="javascript"><div ng-controller="UsingValueServiceCtrl">{{ magicNumberFromService }}</div>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.constant('magicNumber', 42);//常量直接接作为服务
(function() {
var MyService = function(magicNumber) { // "magicNumber" is injected
this.getMagicNumber = function() {
return magicNumber;
};
};
app.service('magicNumberService', MyService);
}());
function UsingValueServiceCtrl($scope, magicNumberService) {
$scope.magicNumberFromService = magicNumberService.getMagicNumber();
}
</script></pre><br>
<br>
<pre></pre>
<br>
<br>
第五种方式:factory
[javascript] view
plaincopyprint?
<div ng-controller="UsingValueServiceCtrl">{{ magicNumberFromService }}</div>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.constant('magicNumber', 42);//常量直接接作为服务
(function () {
// registers a service factory with "magicNumber" injected
app.factory('magicNumberService', function (magicNumber) {
return {
getMagicNumber: function () {
return magicNumber;
}
};
});
}());
function UsingValueServiceCtrl($scope, magicNumberService) {
$scope.magicNumberFromService = magicNumberService.getMagicNumber();
}
</script>
第六种方式:provider
[javascript] view
plaincopyprint?
<div ng-controller="UsingValueServiceCtrl">{{ magicNumberFromService }}</div>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.constant('magicNumber', 42);//常量直接接作为服务
(function() {
var MyService = function(magicNumber) { // "magicNumber" is injected
this.getMagicNumber = function() {
return magicNumber;
};
};
app.service('magicNumberService', MyService);
}());
function UsingValueServiceCtrl($scope, magicNumberService) {
$scope.magicNumberFromService = magicNumberService.getMagicNumber();
}
</script>
http://blog.csdn.net/spy19881201/article/details/17070855
AngularJS实现注入服务的方法有5种方式:
decorator
constant
value
service
factory
provider
其中provider是一切方法的基础,有点类似于XMLHttpObject,在这个基础之上建立起来的,像jquery的$.ajax等等。
第一种方式:decorator
[javascript] view
plaincopyprint?
[javascript] view
plaincopyprint?
<div ng-controller="appCtrl">{{ content }}</div>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.value('profile', 'I\'am a angular developer.');
app.config(function ($provide) {
$provide.decorator('profile', function ($delegate) {
return $delegate + ' I like angularJS. So sorry, you are hacked!';
});
});
app.controller('appCtrl', ['$scope', 'profile', function ($scope, profile) {
$scope.content = profile;
}]);
</script>
第二种方式:constant
[javascript] view
plaincopyprint?
<div ng-controller="UsingConstantServiceCtrl">{{ magicNumber }},{{ bookTitle }}</div>
<div ng-controller="UsingValueServiceCtrl">{{ magicNumberFromService }}</div>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.constant('magicNumber', 42);//常量直接接作为服务
app.constant('magicNumber', 422);//TODO 重新赋值是无效的
app.constant('bookTitle', "Hitchhiker's Guide");
function UsingConstantServiceCtrl($scope, magicNumber, bookTitle) {
$scope.magicNumber = magicNumber;
$scope.bookTitle = bookTitle;
}
(function () {
var existingServiceInstance = {
getMagicNumber: function () {
return 42; // Note that we are using an "hard-coded" magic number
}
};
app.value('magicNumberService', existingServiceInstance);
}());
function UsingValueServiceCtrl($scope, magicNumberService) {
$scope.magicNumberFromService = magicNumberService.getMagicNumber();
}
</script>
第三种方式:value
[javascript] view
plaincopyprint?
<pre code_snippet_id="92094" snippet_file_name="blog_20131202_3_1841481" name="code" class="javascript"><div ng-controller="appCtrl">{{ title }}</div>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.config(function ($provide) {
$provide.value('title', 'my Title')
});
app.controller('appCtrl', ['$scope', 'title', function ($scope, title) {
$scope.title = title;
}]);
</script></pre><br>
<br>
<pre></pre>
<br>
<br>
第四种方式:service
[javascript] view
plaincopyprint?
<pre code_snippet_id="92094" snippet_file_name="blog_20131202_4_2538810" name="code" class="javascript"><div ng-controller="UsingValueServiceCtrl">{{ magicNumberFromService }}</div>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.constant('magicNumber', 42);//常量直接接作为服务
(function() {
var MyService = function(magicNumber) { // "magicNumber" is injected
this.getMagicNumber = function() {
return magicNumber;
};
};
app.service('magicNumberService', MyService);
}());
function UsingValueServiceCtrl($scope, magicNumberService) {
$scope.magicNumberFromService = magicNumberService.getMagicNumber();
}
</script></pre><br>
<br>
<pre></pre>
<br>
<br>
第五种方式:factory
[javascript] view
plaincopyprint?
<div ng-controller="UsingValueServiceCtrl">{{ magicNumberFromService }}</div>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.constant('magicNumber', 42);//常量直接接作为服务
(function () {
// registers a service factory with "magicNumber" injected
app.factory('magicNumberService', function (magicNumber) {
return {
getMagicNumber: function () {
return magicNumber;
}
};
});
}());
function UsingValueServiceCtrl($scope, magicNumberService) {
$scope.magicNumberFromService = magicNumberService.getMagicNumber();
}
</script>
第六种方式:provider
[javascript] view
plaincopyprint?
<div ng-controller="UsingValueServiceCtrl">{{ magicNumberFromService }}</div>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.constant('magicNumber', 42);//常量直接接作为服务
(function() {
var MyService = function(magicNumber) { // "magicNumber" is injected
this.getMagicNumber = function() {
return magicNumber;
};
};
app.service('magicNumberService', MyService);
}());
function UsingValueServiceCtrl($scope, magicNumberService) {
$scope.magicNumberFromService = magicNumberService.getMagicNumber();
}
</script>
http://blog.csdn.net/spy19881201/article/details/17070855
相关文章推荐
- AngularJS服务中serivce,factory,provider的区别
- AngularJS中serivce,factory,provider的区别
- AngularJS中serivce,factory,provider的区别
- AngularJS中serivce,factory,provider的区别
- AngularJS中serivce,factory,provider的区别
- AngularJS中serivce,factory,provider的区别
- angularjs中service、factory和provider的区别
- AngularJs:Service、Factory、Provider依赖注入使用与区别
- AngularJS的Provider, Value, Constant, Service, Factory, Decorator的区别与详解
- angularjs中provider、factory和service三者的写法与区别
- [置顶] 跟我学AngularJs:Service、Factory、Provider依赖注入使用与区别
- AngularJS的Provider, Value, Constant, Service, Factory, Decorator的区别与详解
- AngularJS中service,factory,provider的区别
- AngularJs:Service、Factory、Provider依赖注入使用与区别
- angularjs 中 Factory,Service,Provider 之间的区别
- angularJs中service的三种方法以及区别(factory,service,provider三者的区别)
- angularJS中service、factory、provider使用和区别
- AngularJS的Provider, Value, Constant, Service, Factory, Decorator的区别与详解
- AngularJS 中的 factory、 service 和 provider区别,简单易懂
- AngularJS中几种Providers(Factory, Service, Provider)的区别