angularjs
2012-10-09 3 views 6 likes 
6

私は、フォームanglejs(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> 

コントローラいる:いくつかの条件$scope.invalid_credentials

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

がtrueに設定取得されますが、エラーメッセージを持つdiv要素は示されていません。どのようにそれを表示するには?

答えて

8

角度は、invalid_credentials変数の値を再確認しません。あなたのng-show引数として関数を使うとうまくいくはずです。

+0

ok。私は 'invalid_credentials()' 追加された機能 $ scope.invalid_credentials =にNG-ショーを変更しました - > は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 

を適用する。使用する$範囲であり、それは、UIを更新しません。 ... $applyを使用する必要があるからです。

+0

TypeErrorを取得しています:オブジェクト# 'apply'メソッドがありません –

+2

適用の代わりに$ applyを使用した場合エラー:$ apply already in progress –

+0

面白い。 applyがすでに進行中の場合、$ applyがなくても、$ applyが$ digestが呼び出されることを保証するので、すべてが正当なものでなければなりません。もし$ evalメソッドがうまくいくなら、私は推測して使ってください。しかし、する必要はありません。 –

関連する問題