隔离范围值仅在存在时才被替换 - AngularJS指令

时间:2017-07-28 07:03:39

标签: javascript angularjs angularjs-directive angularjs-scope

模板

<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时没有在第二个指令中触发手表,而是在第一个指令中触发了手表。

抱歉,由于安全原因,我无法发布整个代码。但这是需要调试的代码。

提前致谢!!!

0 个答案:

没有答案