Javascript 当父';s范围变量更改? 指令: ... 角度.module('mymodule')。指令('mydirective'[ 函数(){ 返回{ 范围:{ 显示:'=' }, ... }; }]); 起源: controller.js: this.show=false//initially 函数changeVisibility(){ this.show=true;//如何告知指令此更改? }

Javascript 当父';s范围变量更改? 指令: ... 角度.module('mymodule')。指令('mydirective'[ 函数(){ 返回{ 范围:{ 显示:'=' }, ... }; }]); 起源: controller.js: this.show=false//initially 函数changeVisibility(){ this.show=true;//如何告知指令此更改? },javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,“show”是一个范围变量,最初为false,但后来变为true。但是,发生这种情况时,指令的范围变量“show”不会得到更新。当父级的show变量更改时,如何更新指令的show变量?我需要一个$scope.$watch还是什么?ng show需要一个表达式而不是插值 试一试 给$scope.$apply()一次机会@spoonscen$scope.$apply()不是一个“包治百病”的方法,除非在角度上下文之外更改范围,否则不应使用它,这显然不是该部分实际工作的情况。我有一个控制器,这就是为什

“show”是一个范围变量,最初为false,但后来变为true。但是,发生这种情况时,指令的范围变量“show”不会得到更新。当父级的show变量更改时,如何更新指令的show变量?我需要一个$scope.$watch还是什么?

ng show
需要一个表达式而不是插值

试一试


$scope.$apply()
一次机会@spoonscen
$scope.$apply()
不是一个“包治百病”的方法,除非在角度上下文之外更改范围,否则不应使用它,这显然不是该部分实际工作的情况。我有一个控制器,这就是为什么我使用controller.show。将更新问题。哦…还请注意,不要认为您可以在
ng repeat
元素上使用隔离范围指令。你的编辑不是一个简单的问题。创建一个复制问题的简单Plunk
Directive:
<div ng-show="{{ show }}">
        ...
</div>

angular.module('mymodule').directive('mydirective', [
  function () {
    return {
        scope: {
            show: '='
        },
        ...
    };
}]);

Parent:
<div mydirective show="show" ng-repeat="item in items">
</div>

controller.js:
this.show = false //intially

function changeVisibility(){
  this.show = true; //how to tell the directive about this change?
} 
ng-show="show"