2012-06-12 29 views
26

Jestem początkujący w Knockout i muszę powiedzieć, że często nie rozumiem, kiedy używać (). Czy jest jakaś ogólna wskazówka/sztuczka dotycząca tego, kiedy użyłbyś () przeciwko, kiedy nie chciałbyś, ponieważ w tej chwili robię tylko próbę i błąd. Jeśli powiązanie powoduje błąd lub nie aktualizuje wartości, usuwam () w innym przypadku.Kiedy należy używać nawiasów w nokautach

Odpowiedz

18

Używasz () w nokaut, gdy używasz obserwabli lub podczas wykonywania jakiejkolwiek innej metody. Obserwowalne nokauty to funkcje, wywoływane, aby zwrócić Ci to, czego szukasz, lub umożliwić przypisanie nowych wartości.

W nokautie używamy object.property() do pobrania wartości i object.property(newValue), aby przypisać wartość tej właściwości.

Na nokaucie website kasy dokumentacji, w szczególności sekcji na observables, który pokazuje korzystanie z () podczas odpytywania i pisania obserwowalnych.

zacytować:

var myViewModel = { 
    personName: ko.observable('Bob'), 
    personAge: ko.observable(123) 
}; 
  • do zapoznania się z zaobserwowania na wartość prądu, po prostu zadzwonić do zaobserwowania bez parametrów. W tym przykładzie, myViewModel.personName() będzie powrót „Bob” i myViewModel.personAge() zwróci 123.

  • Aby zapisać nową wartość do zaobserwowania, nazywamy obserwowalne i przekazać nową wartość jako parametr. Na przykład wywołanie myViewModel.personName ("Mary") zmieni wartość nazwy na "Mary".

  • Aby zapisać wartości do wielu obserwowalnych właściwości obiektu modelu, można użyć składni łańcuchów. Na przykład, myViewModel.personName ('Maria'). Osobistość (50) zmienia wartość nazwa do 'Mary' i wartość wiekowej do 50.

jest także Knockout na interactive tutorial całkiem ładne i warto przejść.

3

Zasadniczo za każdym razem, gdy pracujesz z obserwowalną wartością (tablica lub w inny sposób) powinieneś użyć nawiasów, aby uzyskać wartość i ustawić wartość.

var something = ko.obserbable(); 
something(5); //set value 
console.log(something()); //get value: 5 

Wynika to z faktu, że większość implementacje JS nie obsługują pobierające i ustawiające dla właściwości jeszcze, więc obserwable były realizowane w ten sposób, aby ominąć to ograniczenie.

48

Mam wrażenie, że istniejące odpowiedzi pomijają ważne atrybuty: data-bind.

Prawdą jest, że używasz parens, gdy jesteś w Javascript, oraz otrzymujesz lub ustawiasz obserwowalne. Ale kiedy piszesz data-bind="text: property", pomijasz parens nawet podczas pracy z obserwowalnymi.

Edit

Jak zauważono w komentarzu poniżej, wiązania, które są wyrażeń lub właściwości dostępowe observbles wymagają parens

visible: personName().length > 0 
visible: person().Name().length > 0 
visible: person().isVisible 

Zauważ, że ostatni person i isVisisble są zarówno obserwable, ale ostatnia właściwość nie używa parens! Powodem tego jest to, że przekazywaliśmy wartość wiązaniu zamiast obserwowalnego i nie aktualizowałoby się.

+5

Dobra racja, jedynym wyjątkiem jest użycie wyrażenia JavaScript w atrybucie związanym z danymi, w którym to przypadku nawias ** jest ** wymagany, np. 'visible: personName(). length> 0' – benrwb

+0

Nawiasy są również wymagane w przypadku używania wirtualnych powiązań opartych na komentarzach, jak w:' '. Nie rozumiem, dlaczego tak jest, ale od 2.3.2 jest to prawda. – x0n

+0

Zobacz http://stackoverflow.com/a/11318720/1154642 dla innego przykładu użycia obserwowalnego w wyrażeniu. – bryanbraun

Powiązane problemy