AngularJS指令嵌套时变量执行顺序的问题解决办法
今天研究指令嵌套时,发现子指令的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;
})
}
}
});
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。