2013-04-29 8 views
5

Jak stwierdza podlegających, jak mogę wywołać działania, które odbywają się wewnątrzjak wyzwalać kątowych parser bez inputing niczego w dziedzinie

modelController.$parsers(...) 

bez udziału użytkownika ... jedyny sposób mogę myśleć jest owijanie ich wewnątrz funkcji i nazwać, ale czy istnieje lepszy sposób wywołać

**//pseudo 
$(modelController).trigger('just got dirty');** 

powód bym potrzebujesz to, aby wywołać pole wprowadzania do sprawdzania się na złożenie strony.

Odpowiedz

9

Znalazłem sposób na rozwiązanie tego - po prostu zadzwoń Parsery o wartości modelu

angular.forEach(ngModel.$parsers, function (parser) { 
    parser(ngModel.$viewValue); 
}); 

Jest to bardzo proste i wydaje się być najbardziej poprawnym rozwiązaniem.

+0

To działało idealnie dla mnie (wersja 1.2.29) - dziękuję! Dlaczego ta prosta odpowiedź nie jest bardziej rozpowszechniona? Aby nieco poprawić odpowiedź, użyj natywnej pętli 'for' zamiast' angular.forEach', sprawdź właściwość 'name' w parserze i odtwórz tylko to, czego szukasz, zamiast wszystkiego (jeśli dotyczy) i' break' pętla po uruchomieniu, co chcesz. Są to jednak tylko mikro-optymalizacje. –

1

To pytanie jest rzeczywista dla mnie również ... bo jestem rozwiązaniu tego problemu z:

var triggerParsers = function() { 
    var val = ngModel.$viewValue; 
    ngModel.$setViewValue(null); 
    ngModel.$setViewValue(val); 
}; 
+0

Wierzę, że odpowiedź brzmi: do element.trigger ("change"); – user2167582

+0

Próbowałem użyć element.trigger, ale ta sztuczka nie działa, ponieważ wydarzenie zostało wywołane, ale wartość nie została zmieniona, dlatego kąt nie uruchamia parserów. –