2014-10-28 76 views
0

如何使我的自定義過濾器使用綁定工作?自定義過濾器不能在對象中工作

不工作例:

JSON:

{ "name": "Adrian" } 

HTML:

<template bind="{{user}}"> 
    <p>{{name | filterName}}</p> 
</template> 

但它正常工作,當我使用重複。

工作實例:

JSON:

[ 
    { "name": "Adrian 1" }, 
    { "name": "Adrian 2" } 
] 

HTML:

<template repeat="{{user in users}}"> 
    <p>{{user.name | filterName}}</p> 
</template> 

回答

0

如果您已經定義FILTERNAME爲元素的原型在功能...

Polymer('my-element', { 
    filterName: function(value){ 
    return value.toUpperCase() 
    }  
}); 

當我們做

<template> 
    {{ user.name | filterName }} 
<template> 

您可以訪問你的元素和它的屬性「用戶」,「用戶」和FILTERNAME回調。

當你

<template> 
    <template bind="{{user}}"> 
    {{name | filterName}} 
    </template> 
</template> 

你的外模板訪問用戶和FILTERNAME。

但是您的內部模板現在只能看到用戶對象。您的範圍現在僅限用戶使用。當您使用綁定時,這是一個特殊情況。

更多資訊... https://github.com/PolymerLabs/polymer-patterns/blob/master/snippets/basics/using-bind-to-create-a-single-template-instance.html

不過,也有選項供您:

1-不甚理想 - >添加回調在你的對象的屬性。現在您的模型負責轉換dom。吮!

2 - 如果你是重用過濾器,你可以把它變成一個全球性的表達

PolymerExpressions.prototype.filterName = function (value) { 
    return value.toUpperCase(); 
}; 

現在你可以在任何地方使用。

相關問題