Angular.js-装饰控制器

安加德

我正在尝试为控制器设置装饰器。我的目的是在我的应用程序中的所有控制器中引入一些常见的行为。

我已将其配置为在Angular 1.2.x中工作,但是从1.3.x开始有一些重大更改正在破坏代码。现在得到的错误是“控制器不是功能”

以下是装饰器的代码:

angular.module('myApp', ['ng'], function($provide) {
    $provide.decorator('$controller', function($delegate) {

        return function(constructor, locals) {

                //Custom behaviour code

                return $delegate(constructor, locals);
            }
        })
    });

Angular 1.2.x- http://jsfiddle.net/3v17w364/2/(正在工作)
Angular 1.4.x- http://jsfiddle.net/tncquyxo/2/(已损坏)

那将是烧瓶

在Angular 1.4.x模块中具有装饰器方法,$provide.decorator不再需要。

对于猴子修补API,总是最好使用arguments而不是显式枚举它们,否则它被破坏的机会要少得多。

angular.module('myApp', ['ng']).decorator('$controller', function ($delegate) {
    return function (constructor, locals) {
        var controller = $delegate.apply(null, arguments);

        return angular.extend(function () {
            locals.$scope.common = ...;
            return controller();
        }, controller);
    };
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章