隔离范围值仅在存在时才被替换 - AngularJS 指令
Isolate scope value is replaced only if it exists - AngularJS Directive
模板:
<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);
}
});
}
大家好,我想了解 isolate scope 在这里是如何工作的。如果您查看上面的代码,就会发现有 2 个元素指令。 1 个有 waitForData 而另一个没有。
在第二个 指令 中,当我 invokePrint()
并且有 $scope.waitForData=true
时,它不会触发 $watch
。但在第一个 指令中 确实如此。
是否像 isolate scope 没有传递时,它的值不能在指令中被替换?我不明白为什么它会这样。
我只是想知道为什么手表在$scope.waitForData = true
时没有在第二条指令中触发,而是在第一条指令中触发。
抱歉,出于安全原因,我无法 post 完整代码。但这是需要调试的代码
提前致谢!!!
waitForData: '='
表示您需要变量 waitForData。如果您不提供一个,那么它不会立即中断,但一旦您尝试设置该值,它就会中断。打开控制台,您将看到错误消息。
如果您希望该值是可选的,请附加一个问号,如下所示:
waitForData: '=?'
现在,如果您更改第二个指令中的 waitForData 变量,它将触发监视。您应该在所有可选变量上附加一个问号,否则一旦您尝试使用它们,指令就会中断。
模板:
<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);
}
});
}
大家好,我想了解 isolate scope 在这里是如何工作的。如果您查看上面的代码,就会发现有 2 个元素指令。 1 个有 waitForData 而另一个没有。
在第二个 指令 中,当我 invokePrint()
并且有 $scope.waitForData=true
时,它不会触发 $watch
。但在第一个 指令中 确实如此。
是否像 isolate scope 没有传递时,它的值不能在指令中被替换?我不明白为什么它会这样。
我只是想知道为什么手表在$scope.waitForData = true
时没有在第二条指令中触发,而是在第一条指令中触发。
抱歉,出于安全原因,我无法 post 完整代码。但这是需要调试的代码
提前致谢!!!
waitForData: '='
表示您需要变量 waitForData。如果您不提供一个,那么它不会立即中断,但一旦您尝试设置该值,它就会中断。打开控制台,您将看到错误消息。 如果您希望该值是可选的,请附加一个问号,如下所示:
waitForData: '=?'
现在,如果您更改第二个指令中的 waitForData 变量,它将触发监视。您应该在所有可选变量上附加一个问号,否则一旦您尝试使用它们,指令就会中断。