angularjs
2012-10-09 17 views 6 likes 
6

Ben formuAngularjs (ng-show) değişiklikleri nasıl uygulanır?

<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> 

Kontrolörü var: $scope.invalid_credentials true olarak ayarlanır oluyor bazı koşullara

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

ancak hata mesajı ile div gösterilmiyor. Nasıl gösterilecek?

cevap

8

Açısal invalid_credentials değişkeninizin değerini yeniden kontrol etmez. Senin ng-show argüman olarak bir fonksiyonunu kullanarak çalışmalıdır.

+0

ok. i 'invalid_credentials()' eklendi fonksiyon $ scope.invalid_credentials = ng-gösterisi değiştirdik -> console.log ($ scope.invalid_credentials_value) $ scope.invalid_credentials_value ve invalid_credentials_value ayarlamak için koşul değiştirdi. Konsolda gördüğüm gibi, giriş tıklandıktan sonra doğrudur. ama div hala gizlenmiş –

+0

İşleviniz de gerçek mi dönüyor? – netmute

+0

evet. –

2

kabul cevap çalışacaktır ... Ancak, gerçekten yapmak için gerekli ne kapsamını güncellediğimde $, Genel

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

geçerlidir. Kullanımının $ kapsamı olduğunu ve UI güncelleme gelmez ... çünkü $apply'u kullanmanız gerekiyor.

+0

TypeError alma ile çalışır: Object # '$ Uyguladığım uygulamam yerine' apply 'uygulamam yerine –

+2

kullanıyorum Hata alıyorum: $ apply zaten devam ediyor –

+0

İlginç. Eğer uygulanmakta olan uygulama devam ediyorsa, $ apply olmadan, $ digest'in çağrıldığından emin olmanız için her şeyin koşucu olması gerekir. $ Eval yöntemi işe yararsa, devam edin ve kullanın. Ama yapmamalıydın. –