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;
})
}
}
});
本博客所有随笔,若未明确标示为转载或未带有原文链接,皆为原创。
本博客所有随笔版权归博客园和kai.ma所有,欢迎转载,转载请保留:
本博客所有随笔版权归博客园和kai.ma所有,欢迎转载,转载请保留:
- 出处:http://kaima.cnblogs.com
- 作者:kai.ma