2017-07-27 71 views
-1

我有一個按鈕:採用NG-禁用按鈕仍然被禁用,即使在條件值發生變化

<button ng-disabled="ctrl.myService.getData().someProperty ? '' : 'disabled'"> 
    Click me! 
</button> 

當應用程序加載somePropertyctrl.myService.getData()不存在。所以該按鈕被禁用。

但幾秒鐘後someProperty設置爲ctrl.myService.getData()但我的按鈕仍然被禁用..任何想法爲什麼不啓用基於新屬性的按鈕?

+0

您必須使用布爾運算符來觸發禁用。檢查https://stackoverflow.com/questions/45349719/using-ternary-operator-in-angularjs-to-set-an-attribute-on-an-element/45349944#45349944 – Vivz

+0

可能的重複[在angularjs中使用三元運算符在元素上設置屬性](https://stackoverflow.com/questions/45349719/using-ternary-operator-in-angularjs-to-set-an-attribute-on-an-element) – Vivz

+0

沒有看到任何區別使用'true'或'false' – bobbyrne01

回答

0

此外,一定要調用$ scope.apply()在結束您的方法執行,因此它可以應用所需的更改

1

它應該是這樣的:

在你的控制器:

 <script> 
     app.controller("myCtrl", function($scope) { 

      $scope.is_disabled = ctrl.myService.getData().someProperty; 
     }); 
    </script> 

在HTML:

<button ng-disabled="is_disabled ? false : true"> 
     Click me! 
    </button> 
+0

使用true或false,但值仍然不會改變..它始終保持在原始狀態,即禁用 – bobbyrne01

+0

@ bobbyrne01我已更新答案 –