2013-04-02 27 views
1

我使用敲除綁定。我有以下代碼:當可觀察值爲空時避免錯誤

<div data-bind="with: transport()"> 
    <textarea data-bind="text: sender().complete()"></textarea> 
</div> 

有時發件人是null從而對這個綁定時發生錯誤:text: sender().complete()

如何與淘汰賽進行,以避免錯誤時,可觀察到的是空?

回答

0

最後,這裏是我做的:

當物體運輸初始化時,我創造了在傳輸發送者(=託運人實體)是否存在等一個計算了senderSignaletic該測試然後檢索從它的signaletic:

transport.senderSignaletic = ko.computed(function() { 
    return (transport.sender()) ? transport.sender().signaletic : ''; 
}); 

而當對象託運人正在初始化,我創建了一個計算爲signaletic這是名稱,街道,號碼,城市的串聯,...:

shipper.signaletic = ko.computed(function() { 
    var name = shipper.name(); 
    var street = shipper.street(); 
    var number = shipper.number(); 
    var postcode = shipper.postCode(); 
    var city = shipper.city(); 

    var country = shipper.country().name(); 
    return name + '\n' + street + ' ' + number + '\n' + postcode + ' ' + city + ' ' + country; 
}); 
0
<div data-bind="with: transport()"> 
    <textarea data-bind="text: sender() ? sender().complete() : ''"></textarea> 
</div> 
+1

text:sender!= null? sender()。complete():''應該是有效的。也可以將可觀察的值設爲空值,但它可以包含空值,但它本身不能爲空 – Anders

+0

@Anders這是真的,但是當您調用sender()時,您正在訪問該值,因此sender()。complete() '是'null.complete()'。 – Tyrsius

+0

我修復了答案。 –