2014-11-26 2 views
2

Одним из свойств моего полимерного элемента является временной меткой:полимера: с использованием функции в связывания данных экспрессии

Polymer({ 
    timestamp: null, 
    ready: function() { 
    this.timestamp = new Date().getTime(); 
    } 
}); 

В моей разметке мне нужно, чтобы показать отформатированную метку времени:

<template> 
    timestamp={{getFormattedTimestamp()}} 
</template> 

где

getFormattedTimestamp: function() { 
    return new Date(this.timestamp).toLocaleString('en-US', {timeZoneName: 'short'}); 
} 

Но приведенный выше код не обновляет экран при this.timestamp изменения, потому что Polymer не знает, что ему нужно позвонить getFormattedTimestamp, когда это произойдет.

Я не могу просто поместить содержимое getFormattedTimestamp в выражение привязки данных, потому что оно не сможет его проанализировать, и я не могу создать вычисленное свойство по той же причине.

Есть ли способ сделать это, кроме создания вспомогательной переменной-члена, которая содержит отформатированную метку времени и ее обновление при изменении временной метки?

ответ

0

Вы изучали filter expressions?

Вы можете иметь что-то вроде этого:

<template> 
    timestamp={{timestamp | getFormattedTimestamp }} 
</template> 
+0

Есть ли решение в Polymer 1.0? – Markus

+0

вычисленные свойства или функции: –

3

Функции в разметке должна относиться к свойствам они зависят как их параметры (потому что Polymer использует их, чтобы выяснить, когда их обновление).

<template> 
    timestamp={{getFormattedTimestamp(timestamp)}} 
</template> 

getFormattedTimestamp: function (timestamp) { 
    return new Date(timestamp).toLocaleString('en-US', {timeZoneName: 'short'}); 
} 
Смежные вопросы