根据CoreSelector的选定值更改Polymer模板中的输入字段

时间:2014-09-19 22:16:49

标签: polymer dart-polymer

我有一个“添加资料”对话框,可让您选择要添加的内容类型。基于此,我想包含或排除某些字段。

<core-selector id="content-type" target="{{$['types']}}" itemsSelector="li" valueattr="value" selected="other"></core-selector>
  <ul id="types" class="list">
    <li value="announcement">Announcement</li>
    <li value="event">Event</li>
  </ul>
</core-selector>

我调查$来引用我的字段,例如:

addItem(Event e) {
  e.preventDefault();

  CoreSelector type = $['content-type'];
  CoreInput name = $['name'];
  CoreInput subject = $['subject'];
  CoreInput body = $['body'];
  ...

我正在收听对内容类型选择器的更改:

attached() {
  CoreSelector type = $['content-type'];
  type.addEventListener('core-select', (e) {
    selectedType = type.selected;
  });
}

selectedType是可观察的:@observable var selectedType;。)

在模板本身中,如果我这样做:

<template if="{{selectedType == 'event'}}">
  <!-- Show some additional fields here. -->
</template>

问题是$不包含这些字段,因为在标记模板时(即填充$时)它们不存在。

什么是解决这一问题的更好方法?

我想到的是这种将所有表单字段分配到@observable Map的方法,如下所示:https://www.dartlang.org/docs/tutorials/forms/#binding-data。对于我尝试做的事情,这会是一个更好的方法,如果是这样,我将如何适应它?

0 个答案:

没有答案