2015-12-24 3 views
1

Могу ли я сделать что-то вроде следующего, в Polymer 1.0:Polymer 1,0: Условные операторы потока

<template is="dom-bind"> 
<template is="dom-if" if="{{ messagetype=='chat' }}"> 
    <p>{{message.text}}</p> 
</template> 
<template is="dom-if" if="{{ messagetype=='location' }}"> 
    <p>{{message.latitude}} , {{message.longitude}}</p> 
</template> 
</template> 

т.е. принять решение, основываясь на messagetype связывания и ничего не писать еще в Polymer() функции

ответ

1

Выражение синтаксиса в Полимер 1,0 очень ограничен. Вы можете получить доступ к полям (или проспектам) и функциям. Выражение может использовать ! для not и . для . для доступа к массиву и доступа к объекту. Для всех esle создайте функцию, которая возвращает вычисленный результат. Смотрите также https://www.polymer-project.org/1.0/docs/devguide/data-binding.html#expressions-in-binding-annotations Для примера можно создать функцию, как

function: isEqual(a, b) { 
    return a == b; 
} 

и использовать его в связывании как

<template is="dom-if" if="{{isEqual(messagetype, 'chat')}}"> 
0

Это не хорошо использовать РОМ-если заявления. Вам лучше создать функцию, которая вычисляет, какой текст помещается в тег p и перемещает условную логику туда.

Что-то вдоль линий этого:

<template is="dom-bind"> 
    <p>[[computeMessageValue(message, messagetype)]]</p> 
</template> 

С следующей вычислительной функции:

computeMessageValue: function (message, messagetype) { 
    if (messagetype === 'chat') { 
     return message.text; 
    } else if (messagetype === 'location') { 
     return message.latitude + ' , ' + message.longitude; 
    } 
} 

Использование дом-если подход медленнее, труднее писать тесты для и получает очень неаккуратно очень быстро, когда вы добавляете новые типы сообщений.