今天研究指令嵌套时,发现子指令的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; }) } }});
时间: 2024-10-27 07:26:48