angular-服务(factory 、 service 和 provider)

$location,$http,$timeout,$interval

1.factory 定义一个对象, 给这个对象添加属性和方法, 然后返回这个对象。直接调用

app.factory('MyFactory',function() {

    // define result object of factory.  varresult = {}; 

    // add some property and method to the object  result.greeting = 'Hello from factory.'; 

    // return the object;  return result; 

});

引入直接调用

2.service 通过service方式创建自定义服务,相当于new的一个对象:new myService();,只要把属性和方法添加到this上才可以在controller里调用。

app.service('MyService', function() {  

this.greeting = 'Hello from service';  

}); 

引入:

var serviceObj = new MyService(); 

3.provider 

当你使用Provider创建一个service时,唯一的可以在你的控制器中访问的属性和方法是通过$get()函数返回内容。

provider 必须提供一个 $get 方法, $get 方法和 factory 要求是一致的, 即: 先定义一个对象, 给这个对象添加属性和方法, 然后返回这个对象

app.provider('MyProvider', function() {  

this.$get = function() {  

    var result = {};  

    result.greeting ='Hello from provider';  

    return result;  

    }  

})


provider 可以在应用启动时进行配置

provider 的特殊之处就是可以在 module 启动时进行配置, 从而达到特殊的用途

app.provider('MyProvider', function() {  

// default name is 'anonymous';  

var defaultName = 'anonymous';  

var name = defaultName;  

// setName can be called duaring module init  

this.setName = function(newName) {  

        name = newName;  

    }  


this.$get = function() {  

var result = {};  

result.greeting ='Hello from provider';  

        result.name = name;  

        result.defaultName = defaultName;  

return result;  

    }  

})

app.config(function(MyProviderProvider) {  

    MyProviderProvider.setName('Angularjs Provider');  

}); 

使用都是一样的:

app.controller('TestController', ['$scope', 'MyFactory', 'MyService', 'MyProvider', function($scope, myFactory, myService, myProvider) {  

    $scope.greetingFromFactory = myFactory.greeting;  

    $scope.greetingFromService = myService.greeting;  

    $scope.greetingFromProvider = myProvider.greeting;  

}]);  

你可能感兴趣的:(angular-服务(factory 、 service 和 provider))