Napisałem kilka niestandardowych powiązań za pomocą KnockoutJS. Nadal nie jestem pewien, kiedy użyć ko.util.unwrapObservable(item)
Patrząc na kod, to połączenie w zasadzie sprawdza, czy jest możliwe obserwowanie item
. Jeśli tak, zwróć wartość(), jeśli nie, po prostu zwróć wartość. Patrząc na odcinku Knockout na temat tworzenia niestandardowych powiązań, mają następującą składnię:Kiedy używać ko.utils.unwrapObservable?
var value = valueAccessor(), allBindings = allBindingsAccessor();
var valueUnwrapped = ko.utils.unwrapObservable(value);
w tym przypadku, oni wzywają obserwowalny poprzez ()
ale również zadzwonić ko.utils.unwrapObservable
. Po prostu próbuję zrozumieć, kiedy użyć jednego z drugim, lub czy powinienem zawsze postępować zgodnie z powyższym schematem i używać obu.
Czy istnieje wzór, w którym opublikowałem sprawdzone metody dotyczące niestandardowych wiązań w przyszłości? – arb
To naprawdę zależy od sytuacji. Niektóre niestandardowe wiązania są zaprojektowane tylko do pracy z obserwowalnymi, więc możesz sprawdzić z góry (ko.isObservable), że jest to obserwowalne, a następnie możesz go rozwinąć za pomocą(). Jeśli otrzymujesz obiekt, który może mieć zagnieżdżone obserwowalne obiekty, lepiej jest zrobić 'ko.toJS (yourObject)' zamiast używać 'ko.utils.unwrapObservable', jeśli próbujesz uzyskać nieopakowaną wersję obiektu przekazać do widgetu lub biblioteki innej firmy. Zasadniczo najbezpieczniej jest używać 'ko.utils.unwrapObservable' do obsługi obserwowalnych i nieobserwowalnych. –
Chyba jestem zdezorientowany tym, co jest celem 'ko.utils.unwrapObservable'. Patrząc na kod, sprawdza on tylko, czy jest on możliwy do zaobserwowania, a jeśli jest, Knockout wywołuje '()', aby uzyskać wartość obserwowalnego, w przeciwnym razie po prostu zwraca wartość nieobserwowalną. Jeśli wszystko, co mnie interesuje, to wartość danych przekazanych do wiązania, dlaczego nie mogę po prostu zawsze użyć '()'? – arb