2013-06-28 10 views
8

Próbuję powiązać mój model danych z polem tekstowym w Ember.js. Model ma pole, które reprezentuje wartość waluty (np. 1000,50 USD). Użytkownik może następnie zmienić tę wartość.Wiązania Computed Property w Ember TextField

Ember odbiera dane w postaci liczby (1000,50) - nie ma sformatowanej waluty. Łączę widok z wyliczoną właściwością, która ma ładny format. Oto mój szablon kierownicy.

{{input classNames="amount" valueBinding="p.amountFmt"}}</td> 

Mój model wygląda następująco:

App.Product = Ember.Object.extend({ 
    amount : 0.00, 
    amountFmt: function() { 
    //example. Do actual formatting with this.get('amount'); 
    var formattedNum = '1,000.50'; 
    return formattedNum; 
    }.property('amount') 
}); 

jest problem, gdy użytkownik zmienia ilość w polu wejściowym instrumentu bazowego „ilość” właściwość w moim modelu nie jest aktualizowana -I przypuszczać, ponieważ jest związany z obliczoną własnością.

Jaki jest poprawny sposób pobrania danych wejściowych użytkownika, przeanalizowania i sprawdzenia, jeśli to konieczne, i zapisania go we właściwości "amount"? Czy powinienem używać wiązań/obserwatorów między dwiema właściwościami? Jak to działa?

Ostatecznie właściwość 'amount' jest po stronie serwera utrzymywana. Naprawdę uważam, że obliczona właściwość to miejsce do formatowania interfejsu użytkownika. Zwykle używam helpera Handlebars do tego rodzaju formatowania, ale nie można połączyć wartościowego powiązania TextField z wynikami pomocnika Handlebars.

Z góry dziękuję za pomoc! Andrew

Odpowiedz

7

Funkcja dla wyliczonej właściwości amountFmt działa zarówno jako pobierający, jak i ustawiający w zależności od kontekstu. Jego sygnatura to amountFmt(key, [value]). Wartość jest opcjonalna i przekazywana tylko wtedy, gdy wartość ma zostać zmieniona.

amountFmt: function(key, value) { 
    if (value) { 
    // setter 
    } else { 
    // getter 
    } 
}.property('amount') 
+0

Dang Gina Szukałem tej odpowiedzi na zawsze! Uber pomocny! Nigdy nie widziałem tego w dokumentach. Czy nie jest to udokumentowane, czy też przeoczyłem to? – bfcoder

+0

Wydaje się to teraz udokumentowane na stronie http://emberjs.com/api/classes/Ember.computed.html#content. Wyliczona funkcja właściwości może teraz być używana z hashem, który zapewnia funkcję get i set. –