2015-02-10 30 views
0

我使用動態下拉菜單與數據綁定饋入的選項。數據是這樣的:我得到0而不是空的字符串在聚合物的紙張下拉菜單(核心菜單)

options = [ 
{ 
    name: "Alle", 
    value: "" 
}, 
    name: "100", 
    value: "100" 
}, 
// ... 
] 

而且這樣的代碼:

<paper-dropdown-menu label="Select"> 
    <paper-dropdown class="dropdown"> 
    <core-menu class="menu" valueattr="data-value" selected="{{search.selectedItem}}"> 
     <template repeat="{{item in options}}"> 
     <paper-item data-value="{{item.value}}">{{item.name}}</paper-item> 
     </template> 
    </core-menu> 
    </paper-dropdown> 
</paper-dropdown-menu> 

但是選擇search.selectedItem得到的數值爲0,並經檢查填寫的第一個項目時,似乎核心菜單的selected屬性也是整數0.

所有其他值按預期工作(字符串)。

當我看到在Chrome檢查元素呈現的HTML看起來像這樣:

<paper-item data-value="" tabindex="0" class="core-selected" active="">Alle</paper-item> 

我怎樣才能迫使它是一個空字符串,就像我的數據?

回答

2

不幸的是,core-selector代碼高度依賴於像檢查:

SMTH = this.selectedItem ? TRUTHY, FALSEY; 

空字符串被評價爲FALSEY,不同於任意非空字符串。這就是爲什麼控制器在空弦上瘋狂的原因。

我建議你使用下面的解決方法。讓我們來定義過濾器爲您selectedItem

<core-menu class="menu" 
      valueattr="data-value" 
      selected="{{selectedItem | fixZero}}"> 
<!--        ⇑⇑⇑⇑⇑⇑⇑⇑⇑  --> 

它應該是both-way-bound

fixZero: { 
    toDOM: function(value) { // called when model changes 
     return value; 
    }, 
    toModel: function(value) { // called when DOM changes 
     return value === 0 ? '' : value; 
    } 
    } 

那會欺騙core-selector後所有驗證重置值恢復爲空字符串被做(假設你沒有零值的意圖。)

現場示例:http://plnkr.co/edit/L5fNgevDERNo7tJQyU0n?p=preview

+0

我猜你不能使用類型提示來解決這個問題? – 2015-02-10 22:55:14

+0

事實上,OP使用'valueattr = ...'的typehinting。問題是空字符串被評估爲_falsey_,並且所有東西都被破壞了。 – mudasobwa 2015-02-11 05:44:19

相關問題