2013-05-23 38 views
24

Có một sự khác biệt thực sự giữa:Sự khác nhau giữa unwrapObservable và()

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

và:

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

Tôi có nên thích một trong những trên và tại sao?

+1

thể trùng lặp của [? Khi nào thì sử dụng ko.utils.unwrapObservable] (http://stackoverflow.com/questions/9624401/ khi sử dụng-ko-utils-unwrapobservable) –

+0

@RichardSzalay: Bạn nói đúng, bỏ lỡ điều đó. Cảm ơn bạn. – mhu

Trả lời

41

Sự khác biệt là ko.utils.unwrapObservable là an toàn. Bạn nên sử dụng nó khi không biết nếu tham số có thể quan sát được hay không. Ví dụ:

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! 

Vì vậy, nếu bạn biết chính xác rằng tham số của bạn là quan sát bạn có thể sử dụng () nếu không sử dụng unwrapObservable.

EDIT: Một phiên bản ngắn hơn của unwrapObservable đã được thêm vào knock-out 2,3-ko.unwrap

Các vấn đề liên quan