Polymer return 下拉选中值返回父元素
Polymer return drop-down selected value back to parent element
下面是两个聚合物元素
1. 抄送下拉
2。产品页面
product-page 在这里是父元素,它没有从子元素那里获取更改后的值 {{selectedData}},它只是从一开始就为空值。
我是不是遗漏了什么?
<link rel="import" href="../../bower_components/polymer/polymer.html">
<dom-module id="cc-dropdown">
<template>
{{selectedData}}
<paper-dropdown-menu label="Environment">
<paper-menu id="ccdropdown" class="dropdown-content" attr-for-selected="value" selected="{{selectedData}}">
<template is="dom-repeat" items="{{data}}">
<paper-item value="{{item}}">{{item}}</paper-item>
</template>
</paper-menu>
</paper-dropdown-menu>
</template>
<script>
(function() {
'use strict';
Polymer({
is: 'cc-dropdown',
properties: {
selectedData: {
notify: true,
reflectToAttribute: true
}
}
});
})();
</script>
</dom-module>
---------------
<link rel="import" href="../../bower_components/polymer/polymer.html">
<dom-module id="cc-product-page">
<template>
{{selectedData}}
<cc-dropdown data="{{Env}}" selected="{{selectedData}}"></cc-dropdown>
</template>
<script>
(function() {
'use strict';
Polymer({
is: 'cc-product-page',
properties: {
Env: {
type: Array,
value: ["STAGE", "QA", "PROD"],
notify: true
}
}
});
})();
</script>
</dom-module>
{{selectedData}}
需要在它自己的 html 元素中。请尝试 <span>{{selectedData}}</span>
。
正如@Michael.Lumley 所说,您应该在自己的 HTML 元素中包含 {{selectedData}}
,正如他所展示的那样。
我认为一个更干净的解决方案是改变这个:
<template>
{{selectedData}}
<paper-dropdown-menu label="Environment">
<paper-menu id="ccdropdown" class="dropdown-content" attr-for-selected="value" selected="{{selectedData}}">
<template is="dom-repeat" items="{{data}}">
<paper-item value="{{item}}">{{item}}</paper-item>
</template>
</paper-menu>
</paper-dropdown-menu>
</template>
为此:
<template>
<span>{{selectedData}}</span>
<paper-dropdown-menu label="Environment" value="{{selectedData}}">
<paper-menu id="ccdropdown" class="dropdown-content">
<template is="dom-repeat" items="{{data}}">
<paper-item>{{item}}</paper-item>
</template>
</paper-menu>
</paper-dropdown-menu>
</template>
paper-dropdown-menu 有一个 属性、value
,只要你改变下拉菜单,它就会改变。
根据有关值 属性 的文档:
The value for this element that will be used when
submitting in a form. It is read only, and will always have the same
value as selectedItemLabel.
selectedItem
属性 将 return 整个 paper-item
元素,这可能不是您想要的。
注意:我不确定您从哪里得到 {{item}}
(打字错误?)。
原来是我的问题,下面是在父组件product-page中使用cc-dropdown的方式,将变化反映回父
- 属性值应该是selected-data(未选择)
- 属性必须有“-”如上
selectedData 应作为 selected-data
传递
<cc-dropdown id="envOptions" data="{{Env}}" selected-data="{{selectedData}}"></cc-dropdown>
下面是两个聚合物元素
1. 抄送下拉
2。产品页面
product-page 在这里是父元素,它没有从子元素那里获取更改后的值 {{selectedData}},它只是从一开始就为空值。
我是不是遗漏了什么?
<link rel="import" href="../../bower_components/polymer/polymer.html">
<dom-module id="cc-dropdown">
<template>
{{selectedData}}
<paper-dropdown-menu label="Environment">
<paper-menu id="ccdropdown" class="dropdown-content" attr-for-selected="value" selected="{{selectedData}}">
<template is="dom-repeat" items="{{data}}">
<paper-item value="{{item}}">{{item}}</paper-item>
</template>
</paper-menu>
</paper-dropdown-menu>
</template>
<script>
(function() {
'use strict';
Polymer({
is: 'cc-dropdown',
properties: {
selectedData: {
notify: true,
reflectToAttribute: true
}
}
});
})();
</script>
</dom-module>
---------------
<link rel="import" href="../../bower_components/polymer/polymer.html">
<dom-module id="cc-product-page">
<template>
{{selectedData}}
<cc-dropdown data="{{Env}}" selected="{{selectedData}}"></cc-dropdown>
</template>
<script>
(function() {
'use strict';
Polymer({
is: 'cc-product-page',
properties: {
Env: {
type: Array,
value: ["STAGE", "QA", "PROD"],
notify: true
}
}
});
})();
</script>
</dom-module>
{{selectedData}}
需要在它自己的 html 元素中。请尝试 <span>{{selectedData}}</span>
。
正如@Michael.Lumley 所说,您应该在自己的 HTML 元素中包含 {{selectedData}}
,正如他所展示的那样。
我认为一个更干净的解决方案是改变这个:
<template>
{{selectedData}}
<paper-dropdown-menu label="Environment">
<paper-menu id="ccdropdown" class="dropdown-content" attr-for-selected="value" selected="{{selectedData}}">
<template is="dom-repeat" items="{{data}}">
<paper-item value="{{item}}">{{item}}</paper-item>
</template>
</paper-menu>
</paper-dropdown-menu>
</template>
为此:
<template>
<span>{{selectedData}}</span>
<paper-dropdown-menu label="Environment" value="{{selectedData}}">
<paper-menu id="ccdropdown" class="dropdown-content">
<template is="dom-repeat" items="{{data}}">
<paper-item>{{item}}</paper-item>
</template>
</paper-menu>
</paper-dropdown-menu>
</template>
paper-dropdown-menu 有一个 属性、value
,只要你改变下拉菜单,它就会改变。
根据有关值 属性 的文档:
The value for this element that will be used when submitting in a form. It is read only, and will always have the same value as selectedItemLabel.
selectedItem
属性 将 return 整个 paper-item
元素,这可能不是您想要的。
注意:我不确定您从哪里得到 {{item}}
(打字错误?)。
原来是我的问题,下面是在父组件product-page中使用cc-dropdown的方式,将变化反映回父
- 属性值应该是selected-data(未选择)
- 属性必须有“-”如上 selectedData 应作为 selected-data 传递
<cc-dropdown id="envOptions" data="{{Env}}" selected-data="{{selectedData}}"></cc-dropdown>