2013-05-23 34 views
24

Czy istnieje rzeczywista różnica pomiędzy:Różnica między unwrapObservable i()

y = ko.observable("value"); 
x = ko.utils.unwrapObservable(y); 

oraz:

y = ko.observable("value"); 
x = y(); 

Wolałbym jeden z wyżej wymienionych i dlaczego?

+1

możliwe duplikat [? Kiedy stosować ko.utils.unwrapObservable] (http://stackoverflow.com/questions/9624401/ kiedy-to-use-ko-utils-unwrapobservable) –

+0

@RichardSzalay: Masz rację, tęskniłeś za tym. Dziękuję Ci. – mhu

Odpowiedz

41

Różnica polega na tym, że ko.utils.unwrapObservable jest bezpieczny. Powinieneś go używać, gdy nie wiesz, czy parametr jest obserwowalny czy nie. Na przykład:

function GetValue(x){ 
    return ko.utils.unwrapObservable(x); 
} 

function GetValueEx(x){ 
    return x(); 
} 

var test = 5; 
var y = GetValue(test) // Work fine, y = 5; 
y = GetValueEx(test) // Error! 

Więc jeśli dokładnie wiemy, że parametr jest zaobserwować można użyć () inaczej używać unwrapObservable.

Edycja: krótszy wersja unwrapObservable dodano nokautem 2,3 - ko.unwrap