Web前端
AngularJs的provider里面的装饰器decorator
我们经常在使用某些Service的时候,更希望它能具备一些额外的功能,这时我们难道改这个Service吗?如果是系统自带的呢,改吗?这当然不现实吧。所以我们的装饰器decorator就发挥作用了,它能让已有的功能锦上添花。我们在config里面使用装饰器。 使用方法: 第一个参数:需要装饰的Service名 第二个参数:一个接受$delegate的回调函数,$delegate代表我们的原来的service实例。 需要注意的是constant常量是不可以被装饰的。 示例代码如下: var app = angular.module(“myApp”, []); app.controller(‘myCtrl’, [‘$scope’, ‘myInfo’, function($scope, myInfo) { console.log(myInfo); }]); app.config([‘$provide’, function($provide) { $provide.decorator(‘myInfo’, function($delegate) { $delegate.lastName = “Prompt”; return $delegate; }) }]); app.service(‘myInfo’, function() { this.fistName = “Shadow”; }) 原来的服务myInfo只有firstName一个属性,我们利用decorator后在不修改myInfo代码的情况下里面添加了lastName属性。