angularjs – 范围的装饰器

前端之家收集整理的这篇文章主要介绍了angularjs – 范围的装饰器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有可能,如果是这样,如何装饰$scope所以所有范围都有一些额外的功能/属性

我正在尝试这样做:

$provide.decorator('$scope',function($scope)
{
    $scope.cakes = true;
    return $scope;
});

但它爆炸了:

Unknown provider: $scopeProvider from App.

我知道我可以向$rootScope添加属性函数,它将原型继承,但我希望指令中的隔离范围也可以访问这些添加内容.

解决方法

我有同样的问题.

只需扩展$rootScope原型.
然后隔离的范围也将具有此方法.

这是我尝试使用lodash debounce函数作为本机范围方法

angular.module('Test',[])
.config(function($provide) {
    $provide.decorator('$rootScope',function ($delegate) {
        $delegate.__proto__.$$busy = 0;
        $delegate.__proto__.$watchDebounce = function (watchExpression,listener,objectEquality){
            var _scope = this;
            var debouncedListener = _.debounce(function (newValue,oldValue,scope){
                listener(newValue,scope);
                _scope.$$busy = 0;
                scope.$digest();
            },1000);

            var wrappedListener = function (newValue,scope){
                _scope.$$busy = 1;
                debouncedListener(newValue,scope);
            }

            return this.$watch(watchExpression,wrappedListener,objectEquality);
        }
        return $delegate;
    })
})

这里的工作示例http://jsfiddle.net/3ncct/

猜你在找的Angularjs相关文章