gpt4 book ai didi

dart - 检查聚合物元素中的对象类型

转载 作者:行者123 更新时间:2023-12-03 02:51:23 28 4
gpt4 key购买 nike

我有一个聚合物元素,其模型可能是两个类之一(技术上是一个公共(public)父类(super class)的两个子类之一)。我正在寻找我的元素模板略有不同,具体取决于模型是两个类中的哪一个。像这样的东西:

<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 Foomodel is Bar正在返回 true。对于每种类型的模型,我看到 {{model.runtimeType}}正在打印 FooBar作为适当的。

我还尝试将 if 条件更改为其他内容,例如 {{model.runtimeType.toString() == 'Foo'}} ,但我似乎找不到合适的条件来正确分类我的模型类型。

在 Dart Polymer 元素中,根据对象类型检测和过滤的正确方法是什么?

编辑:还注意到 {{model is Foo}}{{model is! Foo}}在 Polymer 中使用时似乎作为条件返回 true,但在 .dart 文件中按预期工作。

最佳答案

重要的是不要使用 toString()在这里,因为在使用 dart2js 缩小时它不起作用。与其他建议类似,这里有两个想法即使在混淆/缩小的情况下也应该有效。

<polymer-element name="x-tag">
<template>
<!-- idea #1 -->
<template if="{{model.runtimeType == fooType}}"> ...

<!-- idea #2 -->
<template if="{{isFoo}}"> ...



@CustomTag(x-tag)
class XTag extends PolymerElement {
// idea #1
Type get fooType => Foo;

// idea #2
@observable bool isFoo;
@ObserveProperty('model')
updateIsFoo() { isFoo = model is Foo; }

}

关于dart - 检查聚合物元素中的对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25878785/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com