angularjs
2017-10-11 74 views 0 likes 
0

更新控制器變量我有一個指令:無法從指令

app.directive('hideButton', function() { 
    return { 
     restrict: "A", 
     scope: { 
      init: '=' 
     }, 
     replace : true, 
     link: function(scope, elem, attrs) { 
      if(scope.init) { 
       elem.css('display', 'none'); 
       scope.init = false; 
      } 

      elem.on('click', function() { 
       elem.css('display', 'none'); 
      }); 
     } 
    } 
}); 

這裏,init是控制器變量。

現在在指令中我已經設置了scope.init = false但這個改變沒有反映到控制器中。

回答

2

這是AngularJS中的一個常見問題,因爲這只是不直觀的。

如果您將原始類型綁定到您的指令(init類型爲boolean,在這種情況下),綁定會丟失。嘗試將其包裹到對象中

{ value: true } 

在您的控制器中。

你的指令現在變成

if (scope.init.value) { 
    elem.css('display', 'none'); 
    scope.init = false; 
} 

你的問題也回答這裏:https://stackoverflow.com/a/29265539/537738

相關問題