AngularJS指令嵌套时link函数执行顺序的问题

今天研究指令嵌套时,发现子指令的link函数先于父指令的link函数执行

这样和预想的顺序不一样。

也就是说,如果子指令的某个scope变量依赖于父指令传来的参数时,可能一直是undefinded比如:

APP.directive("子指令", function () {
return {
scope: {
      变量A:"=父指令的参数"
     },
restrict: 'A',
replace: false,
link: function (scope, elem, attr) {
scope.变量B=scope.变量A;//变量量B其实永远是undefinded,因为Link先于父指令的Link执行,
                     //导致此时子指令还没有得到父指令传来的参数值。

}
}
});

怎么办呢?用scope.watch解决吧。

APP.directive("子指令", function () {
return {
scope: {
      变量A:"=父指令的参数"
     },
restrict: 'A',
replace: false,
link: function (scope, elem, attr) {
scope.$watch("变量A",function(){
          scope.变量B=scope.变量A;
       })
}
}
});
posted @ 2015-03-29 18:09  Kai.Ma  阅读(2465)  评论(0编辑  收藏  举报