我有以下.dart组件
@CustomTag('description-form')
class DescriptionForm extends PolymerElement {
@observable Map<String, dynamic> datamap = {};
@observable String description = '';
@published
String get label => readValue(#label);
set label(String value) => writeValue(#label, value);
@published
bool get isVisible => readValue(#isVisible);
set isVisible(bool value) => writeValue(#isVisible, value);
DescriptionForm.created() : super.created();
void publish() {
datamap['description'] = description;
}
@override
void attached() {
super.attached();
datamap['receiver'] = dataset['receiver'];
}
}
要使用已发布的属性,我将以表格
执行以下操作 <description-form
label = 'Others'
isVisible = false
data-receiver = 'shared| description-form --> dynamic-chkbx'>
</description-form>
标签解析后,isVisible不会。
设置使用@published
发布的bool的正确机制是什么?
答案 0 :(得分:1)
回应@ montyr75的回答。
当您希望DOM中可用的字段值在CSS选择器中使用时, PublishedProperty(reflect: true)
是必需的。如果仅在代码@published
中使用它是好的。 (尽管如此,仍然不完全确定。)
如果您想要一个布尔属性,该属性通过属性的存在来指示true
,并且想要使用false
,则需要使用问号<description-form isVisible?="{{reference}}">
我尝试了一个布尔属性,就像你在代码中使用它一样,它只对我有效。
另一个提示:
如果希望集合中的更改在视图中生效,则应使集合可观察
@observable Map<String, dynamic> datamap = toObservable({});
答案 1 :(得分:0)
通常,布尔属性基于它们是否存在而起作用。因此,如果您在类中设置属性,请执行以下操作:
@PublishedProperty(reflect: true) bool isVisible = true;
然后您可以在HTML中使用它:
<description-form
label = 'Others'
isVisible
data-receiver = 'shared| description-form --> dynamic-chkbx'>
</description-form>
如果代码中存在isVisible
,则该类中的true
,并将类的属性更改为false
会删除代码上的属性(感谢reflect: true
)。
希望有所帮助!
答案 2 :(得分:0)
简单回答你的问题:
将正确解析标签中的字符串。如果你有一个布尔发布的属性isVisible
,如果你希望isVisible为<description-form></description-form>
,那么只需使用false
,如果你希望它是<description-form isVisible></description-form>
,可以使用true
。