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
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ść.
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.
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ę.
- 1. Kiedy należy używać nawiasów w instrukcjach require/include?
- 2. Kiedy należy używać JCR i kiedy należy używać JPA/RDBMS?
- 3. Kiedy należy używać _aligned_malloc()?
- 4. Kiedy należy używać WS_EX_NOREDIRECTIONBITMAP?
- 5. Kiedy należy używać ConcurrentSkipListMap?
- 6. Kiedy należy używać AQL?
- 7. Kiedy należy używać setUpClass i kiedy __init__?
- 8. Kiedy należy używać plików XSD?
- 9. Android: Kiedy należy używać FragmentTransaction.remove?
- 10. Kiedy należy używać git skrytki?
- 11. Kiedy należy używać html5 sessionStorage?
- 12. Kiedy należy używać uprawnienia ACCESS_COARSE_LOCATION?
- 13. Kiedy należy używać ramek HTML?
- 14. Kiedy należy używać atrybutu KnownType?
- 15. Kiedy należy używać jednolitej inicjalizacji?
- 16. Kiedy należy używać sortowania Radix?
- 17. Kiedy należy używać niejawnego przesyłania?
- 18. W Objective-C, kiedy należy używać metod klas i kiedy należy używać metod instancji?
- 19. Kiedy należy używać user.get_profile w django?
- 20. Kiedy należy używać SnapsToDevicePixels w WPF 4.0?
- 21. Kiedy należy używać "prototypu" w JavaScript
- 22. Kiedy należy używać setUserState w Joomla?
- 23. Kiedy należy używać struktury MVC w JavaScript?
- 24. Kiedy należy korzystać i kiedy należy importować w Aurelia?
- 25. Kiedy należy używać klasyfikatora PyPI "Naturalny język"?
- 26. Kiedy/nie należy używać adaptera synchronizacji
- 27. Kiedy należy używać rekordu na krotce?
- 28. Kiedy należy używać ViewData zamiast ViewModels?
- 29. Kiedy należy używać ConcurrentDictionary i Dictionary?
- 30. Kiedy należy używać funkcji Win32 InterlockedExchange?
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
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
Zobacz http://stackoverflow.com/a/11318720/1154642 dla innego przykładu użycia obserwowalnego w wyrażeniu. – bryanbraun