2012-10-09 28 views
6

我有形式如何在angularjs(ng-show)中應用更改?

<form ng-controller="SessionController" name="login_form"> 
    <div class="hide" ng-show='invalid_credentials'>Invalid email/pass</div> 
    <input type="submit" value="Login" ng-click='login()'> 
</form> 

控制器:

utApp.controller('SessionController', ($scope, $cookieStore, ClientService) -> 
    $scope.login = -> 
    ... 
    if something 
     $scope.invalid_credentials = true 
     return 

一些條件$scope.invalid_credentials是越來越設置爲true,但未能顯示DIV與錯誤信息。如何顯示它?

回答

8

Angular不重新檢查invalid_credentials變量的值。使用函數作爲您的ng-show參數應該有效。

+0

好的。我已經改變NG-顯示爲 'invalid_credentials()' 加入功能 $ scope.invalid_credentials = - > 的console.log($ scope.invalid_credentials_value) $ scope.invalid_credentials_value 和變更條件設定invalid_credentials_value。正如我在控制檯中看到的,它在點擊登錄後顯示爲真。但div仍然隱藏 –

+0

你的函數是否也返回true? – netmute

+0

是的。通過從 –

2

接受的答案將工作......但是,你真正需要做的是使用$範圍。$應用

utApp.controller "SessionController", ($scope, $cookieStore, ClientService) -> 
    $scope.login = -> 
    if something 
     $scope.$apply (s) -> 
     s.invalid_credentials = true 

一般來說,當你更新的範圍,它不更新用戶界面...這是因爲你需要使用$apply

+0

得到TypeError:對象#有沒有方法'適用' –

+2

如果我使用$應用而不是應用我得到錯誤:$應用已在進行中 –

+0

有趣。如果申請已經在進行中,那麼如果沒有$申請,一切都應該是猶太教,因爲$ apply可以確保$ digest被調用。如果方法$ eval有效,請繼續使用它,我想。但你不應該。 –

相關問題