3

メソッドを次のように設定するという点で、ng-showメソッドに問題があります。

ユーザー名文字列の長さを確認しましたが、正しい長さを報告していても、ng-showメソッドは、キーストロークが続くまで余分なテキストを表示/非表示にしません。キーアップのユーザー名ヘルパーテキストの表示を更新するにはどうすればよいですか?

JSフィドルhttp://jsfiddle.net/FkAkg/8/を見るとどうですか

           accountApp.directive("stripCharacters", ['$filter', '$http', function($filter, $http) {
            return {
                restrict: 'C',
                link: function(scope, element) {
                    element.bind("keyup", function() {
                        if(scope.account.username !== undefined) {
                            element.val($filter('stripCharacters')(scope.account.username));
                            if(scope.account.username.length > 2) {
                                scope.toggleShowUsername(true); 
                                scope.usernameMessage = scope.account.usernameAvailable;
                            } else {
                                scope.toggleShowUsername(false);
                            }
                        }
                    });
                }
            }
        }]);

これを同じ要素のjQueryhide/ showに置き換えることで機能するようになりましたが、Angularでのみ機能することを望んでいました。

乾杯

4

2 に答える 2

2

keyup ハンドラーは Angular の「外部」で実行されるためscope.$apply()、変更したことを Angular に認識させるために使用しますshowUsername

...
if(scope.account.username.length > 2) {
   scope.toggleShowUsername(true); 
   scope.usernameMessage = scope.account.usernameAvailable;
} else {
   scope.toggleShowUsername(false);
}
scope.$apply();

上記はあなたの質問への回答ですが、@pkozlowski.opensource の回答/コメントをお勧めします。

于 2013-02-20T17:32:47.917 に答える