2015-05-23 15 views
0

В 0,5 можно было бы добавить JS-функции, такие как:Каков наилучший способ использования фильтров Polymer 0.9 "?

PolymerExpressions.prototype.timeofdate = function(input) { 
if(input) { 
    return input.substring(11,16) 
} 

(извлечение час: минута от "MongoDB-метки времени", как 2014-10-04T12: 34: 56 + 02: 00)

и использовать его с централизованными переменным как:

{{starts | timeofdate}} 

Когда я попытался обновить код, указанного выше 0,9, я должен был создать этот элемент вместо:

<script> 
    Polymer({ 
    is: 'x-substr', 
    properties: { 
     start: Number, 
     end: Number, 
    }, 
    attached: function() { 
     this.innerHTML = this.innerHTML.substring(this.start, this.end); 
    } 
    }); 
</script> 

И использовать его как это:

<x-substr start="11" end="16">{{starts}}</x-substr> 

(Используйте «привязывается» обратный вызов вместо «готовы», если вы должны использовать этот элемент с любым источником данных)

Является ли это «правильный путь» выполнять функции фильтра, как указано выше в Polymer 0.9+?

ответ

1

Ближе всего вы дойдете до поведения фильтра в 0,5, computed bindings в 0.9+.

Для примера, это будет что-то вроде этого:

<dom-module id="..."> 
    <template> 
    ... 
    <span>{{timeofdate(starts)}}</span> 
    ... 
    </template> 
<dom-module> 

Polymer({ 
    ... 
    timeofdate: function (input) { 
    return input.substring(11,16); 
    } 
    ... 
}); 

Если вам нужно на этот раз в более чем одном месте, вы можете также сделать его computed property вместо этого.

<dom-module id="..."> 
    <template> 
    ... 
    <span>{{starttime}}</span> 
    ... 
    </template> 
<dom-module> 

Polymer({ 
    ... 
    properties: { 
    starts: String, 
    starttime: { 
     type: String, 
     computed: 'timeofdate(starts)' 
    } 
    }, 
    timeofdate: function (input) { 
    return input.substring(11,16); 
    } 
    ... 
}); 
+0

Я попытался, как вы предложили первый, но я не получил его на работу внутри «Дом-повтор шаблона» с привязки данных из железа Аякса элемента с данными JSON ... Вы проверили ваш подход внутри шаблона dom-repeat с чем-то вроде: ' {{item.orginalstring}}'? –

+0

Теперь я получил способ «вычисляемого свойства», с входной строкой в ​​качестве параметра: «' (я не знаю, я действительно знал, что я сделал неправильно раньше). В любом случае использование подключенного обратного вызова в небольшом элементе (только с некоторыми JS) в качестве «фильтра» также работает, и, возможно, нет «наилучшего способа». Возможно, «PolymerExpressions.prototype» или подобное снова появится в будущем ... –

Смежные вопросы