AngularJs 服务区别小Demo

来源:互联网 发布:怎么开启mysql服务 编辑:程序博客网 时间:2024/04/30 07:33

一直以来对各种服务区分的都不是很清楚,今天特地写了一个小Demo,来了解了解,先说自己总结的文字性的东西吧,可能有不完善的地方,希望能指出。

谢谢!

Service :简单来说:通过构造函数的方式让我们创建Service

factory :简单来说:就是返回了一个包含Service方法、数据的对象来定义一个Service

Provider :必须要有个this.$get(),controller当中才可以通过Provider的名字来调用$get()方法返回的对应的方法与数据,但是不能调用到除了$get()以外的其他方法或属性。它也是唯一一个能够可以在.config()方法中访问到的服务,注入方式是: 名字+Provider,这时候就可以访问到整个Provider的方法跟属性了。

Constant:用于定义常量,一旦定义就不能被改变,可以注入到.config()方法中。

Value:用来定义值,可以修改,不能注入到config()方法当中。


页面上什么也没有:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Service</title>    <script src="js/angular.min.js"></script>    <script src="js/service_test.js"></script></head><body ><div  ng-app="myApp" ng-controller="myCtrl">    <div>{{text}}</div></div></body></html>


对应的JS(service_test.js)文件:

angular.module('myApp',[])    .config(function(myproviderProvider,myConstant){        //使用        alert(myproviderProvider.name);        alert(myConstant);        //myproviderProvider.$get();    })    .run(function(){})    .controller('myCtrl',function($scope,service,factory,myprovider,myValue){        $scope.text = 'text';        alert('controller');        service.pop();        factory.pop();        myprovider.pop();        alert(myValue);        myValue = '修改后的值';        alert(myValue);    })    .service('service',function($timeout){        this.pop = function (){            $timeout(function(){                alert('service');            },1000);        };    })    .factory('factory',function($timeout){        var gc = {            pop : function(){                $timeout(function(){                    alert('factory');                },2000)            }        };        return gc;    })    .provider('myprovider',function(){        this.name = '提供者';        this.$get = function($timeout){            var tg = {                pop : function(){                    $timeout(function(){                        alert('provider');                    },2000)                }            };            return tg;        }    })    .constant('myConstant','常量不可变')    .value('myValue','值');


0 0
原创粉丝点击