2015-04-28 112 views
0

我有這種形式:ngDisabled和ngClick不能一起工作

<div class="form-group"> 
       <label for="GrpName"> Mail:</label> 
       <input ng-model="customerToUpdate.mail" type="text" class="form-control" id="name"> 
        <button type="button" class="btn btn-default" ng-click="loadCustomer()"> 
         Load 
        </button> 
       </div> 

       <div class="form-group"> 
       <label for="GrpName"> Username:</label> 
       <input ng-disabled="{{isDisabled}}" ng-model="customerToUpdate.username" type="text" class="form-control" id="name"> 
       </div> 

控制器:

$scope.isDisabled = true; 

$scope.loadCustomer = function() { 

    Customer.getByEmail($scope.customerToUpdate.mail) 
       .success(function(customer, status, headers, config) { 

        if(!isEmptyObject(customer)){ 
         $scope.isDisabled = false; 
        }else 
        $scope.isDisabled = true; 

     }); 
    }; 

使用Chrome,我可以檢查並看到ng-disabled改爲truefalse但沒有UI更新。我也試過readonly代替,但相同的結果..

我失去了一些東西?

+4

應NG-禁用= 「isDisabled」 –

+0

解決了,可你讓一個答案?我不明白區別..爲什麼ng-disabled在檢查模式下更改爲true和false,但在UI中沒有更改? –

+1

總結:ng-disabled使用'=',所以你必須傳遞變量(不是值),否則指令失敗並且什麼也不做,所以它仍然是ng-disabled =「...」(不是disabled =「...」 ) –

回答

3

NG-禁用is bound with '=' not with '@',所以你不應該使用括號:

把你

<input ng-disabled="{{isDisabled}}" ng-model="customerToUpdate.username" type="text" class="form-control" id="name"> 

<input ng-disabled="isDisabled" ng-model="customerToUpdate.username" type="text" class="form-control" id="name"> 

,它應該工作!

+0

我已經解決了,謝謝,你能在這個問題下看我的評論嗎? –

+0

當然我可以:-)如果你接受我的回答,我會很高興:-) – hoeni

-1

之後所進行的HTTP請求,並在變更後$範圍回調,你必須使用 $範圍$適用()。 強制反射鑑於