模板:
<ui-print text="Print" panel="#paper1"
wait-for-data="adc.waitForData"
callfront-fn="adc.someFunction()"></ui-print>
<ui-print text="Print" panel="#paper2"></ui-print>
指令:
scope: {
text: '@',
panel: '@',
callfrontFn: '&',
waitForData: '='
},
link: function($scope) {
var invokePrint = function(panel) {
$window.print();
$scope.waitForData = true;
}
$scope.printPanel = function(panel) {
if (!$scope.waitForData) {
invokePrint(panel);
} else {
$scope.callfrontFn();
}
};
$scope.$watch('waitForData', function(n) {
if (n === false) {
invokePrint($scope.panel);
}
});
}
大家好,我正在尝试了解隔离 范围的工作原理。如果查看上面的代码,则有2个元素指令。 1有 waitForData ,另一个没有。
在第二个指令中,当我invokePrint()
并且$scope.waitForData=true
时,它没有触发$watch
。但是在第一个指令中确实如此。
当隔离范围未通过时,它的值是否在指令中无法替换?我不明白为什么会这样。
我只是想知道为什么在$scope.waitForData = true
时没有在第二个指令中触发手表,而是在第一个指令中触发了手表。
抱歉,由于安全原因,我无法发布整个代码。但这是需要调试的代码。
提前致谢!!!