AngularJs Directive Link函数无法访问attr属性

时间:2017-06-08 17:19:20

标签: javascript angularjs angularjs-directive

我在angularJS

中返回了以下指令
return {
            restrict: _restrict,
            link: function (scope, element, attrs) {
                $timeout(LinkPre, 0);  //Calling a scoped method
            },
            templateUrl: ConstrutorapiTemplatesChart,
            scope: "@",
            controller: Controller
        }

我的LinkPre功能是下面的功能

var LinkPre = function (scope, elem, attrs) {
            attrs.$observe(_attrUrl, function (relatorio) {
                if (relatorio != "") AoMudarUrl(scope, elem, relatorio);
            });
        }

我在LinkPre函数上遇到错误,即attrs未定义

无法读取未定义的属性'$ observe'

任何人有任何想法为什么?

Obs:我需要在渲染指令后执行Link函数

2 个答案:

答案 0 :(得分:0)

首先,您需要将参数正确传递给函数。 然后,如果您的功能是在关联的控制器内定义的,则需要在链接功能中添加控制器并通过控制器参考调用该功能。

尝试:

link: function (scope, element, attrs, myController) {
    $timeout(myController.LinkPre.bind(this, scope, element, attrs));  
}

答案 1 :(得分:0)

多数民众赞成因为你的LinkPre函数在超时调用时没有收到任何aguments,这就是为什么attrs和所有参数都是未定义的,你可以尝试以下方法:

$timeout(function() {
    LinkPre(scope, elem, attrs);
});

无需结束零