Zajmuję się tworzeniem aplikacji WWW jQuery Backbone.js.
Tak jak w Adobe Flex, zaimplementowałem dwukierunkowe powiązanie danych w mojej aplikacji dla elementów wejściowych/widżetów . Tak, każdy element wejściowy/widget zna odpowiednią nazwę atrybutu modelu i modelu.
Gdy użytkownik kliknie kartę lub wprowadzi, wartość pola zostanie automatycznie przypisana do modelu.Dwukierunkowe powiązanie danych w backbone.js
container.model.set(this.attrName, this.value, options); // command 1
W przeciwnym kierunku, kiedy model jest aktualizowany od backend, widok elementu wejściowego/widget powinien automatycznie się aktualizacja:
container.model.bind("change:"+ this.attrName, this.updateView, this); // command 2
Problemem jest:
Kiedy użytkownik wchodzi enter, a model jest automatycznie aktualizowany, również wywoływana jest "change: abc" i wywoływana jest this.updateView, nie tylko wtedy, gdy nowy model pochodzi z zaplecza .
Moje rozwiązanie do tej pory polegało na przekazaniu opcji "source: gui" przy ustawianiu wartości modelu po naciśnięciu klawisza enter (polecenie 1) i sprawdzeniu tego w mojej metodzie updateView. Ale nie jestem zadowolony z tego rozwiązania.
Czy ktoś ma lepsze rozwiązanie? dziękuję z góry
Wolfgang
Aktualizacja:
Gdy opcja cichy: prawda jest przekazywana, metoda sprawdzania poprawności modelu nie jest wywoływana, więc że nie pomaga. Zobacz źródło backbone.js 0.9.2:
_validate: function(attrs, options) {
if (options.silent || !this.validate) return true;
Dziękuję Daniel. Ale z tą opcją "sprawdzanie poprawności" nie jest wywoływane. Więc to mi nie pomaga. –
Cześć Wolfgang, Widziałem twoją nową aktualizację i dodałem rozwiązanie. =) –