2013-05-23 4 views
24

C'è una differenza reale tra:Differenza tra unwrapObservable e()

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

e:

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

dovrei preferire uno dei precedenti e perché?

+1

possibile duplicato di [? Quando utilizzare ko.utils.unwrapObservable] (http://stackoverflow.com/questions/9624401/ when-to-use-ko-utils-unwrapobservable) –

+0

@RichardSzalay: hai ragione, l'hai perso. Grazie. – mhu

risposta

41

La differenza è che ko.utils.unwrapObservable è sicuro. Dovresti usarlo quando non sai se il parametro è osservabile o meno. Per esempio:

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! 

Quindi, se si sa esattamente che il parametro è osservabile è possibile utilizzare () altrimenti utilizzare unwrapObservable.

EDIT: Una versione più breve di unwrapObservable è stato aggiunto in knockout 2,3-ko.unwrap