2017-05-24 64 views
1

我不能設法得到site.address.country工作的這個簡單的綁定:在紙張下拉菜單中選擇更換紙項目的空值與對象

我的後端的情況下,返回一個JSON對象這樣的國家未設置:

{ "address" : { "street" : null, "country" : null } } 

在這種結構中,當paper-dropdown-menu改變時,聚合物似乎並沒有能夠與取代國家的null - 值

{ "address" : { "street" : null, "country" : { "id" : "lu" } } } 

將聚合物替換爲{ "id" : "lu" }的國家的空值的正確方法是什麼?

這是到目前爲止我的代碼:

<paper-dropdown-menu label="Country"> 
    <paper-menu attr-for-selected="value" selected="{{site.address.country.id}}" class="dropdown-content"> 
     <paper-item value="lu">Luxembourg</paper-item> 
    </paper-menu> 
</paper-dropdown-menu> 
<paper-input value="{{site.address.street}}" label="Street"></paper-input> 

我,但不想做一些哈克像來取代值我從後臺得到後,點菜:

siteLoaded: function(e) { 
    if (!e.detail.response.address.country) { 
     e.detail.response.address.country = { "id" : "" }; 
    } 
    this.set("site", e.detail.response); 
} 
+0

你的對象應該看起來像「{」address「:{」country「:{id:」lu「},」street「:」foo「}}'。這看起來像這樣嗎? –

+0

我重新制定了我的問題,因爲問題原來是一個不同的... – yglodt

+0

你的json看起來不像json – codeMonkey

回答

2

嘗試通過以下方法爲Object類型的屬性定義默認值(通過定義返回默認對象的函數):

... 

Polymer({ 
    is : "site-form", 
    properties : { 
     site : { 
      type : Object, 
      value : function() { return { "address" : { "country" : {id: 0} } }; } 
     } 
    }, 
... 

編輯: 重新格式化問題後,我明白了這個問題。在你的情況下,country.id是未定義的,所以我想你的hacky方式應該是正確綁定的最佳解決方案。

+0

我已經重新制定了我的問題,因爲問題原來是一個不同的... – yglodt

+0

現在我更好地理解你的問題。更新我的答案。 – abhiweb

相關問題