У меня есть полимерный элемент, модель которого может быть одним из двух классов (технически одним из двух подклассов общего суперкласса). Я ищу, чтобы мой шаблон элемента немного отличался в зависимости от того, какой из двух классов является моделью. Что-то вроде этого:
<polymer-element name="my-element">
<template>
{{model.runtimeType}} <!-- sanity check -->
{{model.commonProperty}}
<template if="{{model is Foo}}">
{{model.fooSpecificProperty}}
</template>
<template if="{{model is Bar}}">
{{model.barSpecificProperty}}
</template>
</template>
<script type="application/dart" src="my-element.dart"></script>
</polymer-element>
Я обнаружил, что оба шаблона if отображаются, как будто оба model is Foo
и model is Bar
возвращают true. Я вижу, что для каждого типа модели {{model.runtimeType}}
печатает Foo
и Bar
соответственно.
Я также пытался изменить условия if на другие вещи, такие как {{model.runtimeType.toString() == 'Foo'}}
, но я не могу найти правильное условие для правильной сортировки типов моих моделей.
Каков правильный способ обнаружения и фильтрации в элементе Dart Polymer на основе типа объекта?
РЕДАКТИРОВАТЬ: Также обратите внимание, что и {{model is Foo}}
, и {{model is! Foo}}
, кажется, возвращают true как условное выражение при использовании в Polymer, но работают, как и ожидалось, внутри файла .dart.