テンプレート:アイソスコープ値は、それが存在する場合にのみ交換される - AngularJSディレクティブを
<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であり、もう1つはありません。 I invokePrint()
と$watch
をトリガされていない$scope.waitForData=true
が、そこにある第二ディレクティブ、で
。しかし、最初のの指示文にあります。
分離スコープが渡されていない場合は、その値をディレクティブで置き換えることはできませんか?私はなぜそれがそのように振る舞っているのか分かりません。
私はちょうどその時$scope.waitForData = true
時計は第二ディレクティブでトリガされない理由を知りたいと思ったが、第一指令でトリガ。
私はセキュリティ上の理由から全体のコードを投稿することができませんでした申し訳ありません。しかし、これはデバッグが必要なコードです。
ありがとうございます!!!
あなたは 'callfrontFn見ることができるように:あなたの第二のディレクティブのテンプレートでは使用できませんあなたの孤立範囲に'「=」:「&」を '、と' waitForData。それはうまくいかないでしょう。 –
であり、両方のスコープがテンプレートの対応する属性を指しています。ディレクティブを詳しく調べる必要があると思います。それはより良い理解のためにあなたを助けるでしょう。 –