【发布时间】:2015-04-23 22:12:29
【问题描述】:
这是我今天更新到最新的 Dart 库时出现的一个问题。
子自定义元素是一个组合框。父自定义元素用不同的字符串列表填充它。
// child HTML
<polymer-element name="bx-icombo" attributes="aLabel aList aSelected">
<template>
<div class='outr' flex layout horizontal center>
<label for='inp' flex end-justified>{{aLabel}}</label>
<!-- wait until the data is available -->
<template if='{{aList}}'>
<paper-dropdown-menu id='inp' label='aLabel' valign='top' flex start-justified >
<paper-dropdown class="dropdown">
<core-menu id='m' class="menu" selected="{{aSelected}}">
<template repeat='{{aList}}'>
<paper-item name='{{}}'>{{}}</paper-item>
</template>
</core-menu>
</paper-dropdown>
</paper-dropdown-menu>
</template>
</div>
</template>
<script type='application/dart' src='bx_icombo.dart'></script>
</polymer-element>
//---------------------------------------------------------------
// child Dart
@CustomTag('bx-icombo')
class BxICombo extends PolymerElement {
@PublishedProperty(reflect: true) String aLabel;
@PublishedProperty(reflect: true) List<String> aList;
@PublishedProperty(reflect: true) String aSelected;
BxICombo.created() : super.created();
}
//---------------------------------------------------------------
// Parent HTML
<polymer-element name="tst-sigs">
<template>
<paper-dialog backdrop heading='Sigs' closeSelector=''>
<bx-icombo aLabel='{{selectAsignal}}'
aList='{{sigsList}}'
aSelected='{{sigsSel}}'>
</bx-icombo>
</paper-dialog>
</template>
<script type='application/dart' src='tst_sigs.dart'></script>
</polymer-element>
//---------------------------------------------------------------
// Parent Dart
@CustomTag('tst-sigs')
class TstSigs extends PolymerElement {
@observable List<String> sigsList = ['alpha', 'beta', 'gamma'];
@observable String sigsSel;
@observable String selectAsignal = 'Select a Signal';
TstSigs.created() : super.created();
}
//---------------------------------------------------------------
Dartium 报告:
Attributes on bx-icombo were data bound prior to Polymer upgrading the element. This may result in incorrect binding types. (:1)
那么必须改变什么? @PublishedProperty 或 @observable 或 @published 或 ...。我承认发现 @... 注释的迷宫非常不清楚。
版本是:
Dart: 1.9.3 (STABLE)
Dartium: 39.0.2171.99
和包:
analyzer 0.24.6 (0.25.0+1 available)
args 0.12.2+6 (0.13.0 available)
barback 0.15.2+4
browser 0.10.0+2
cli_util 0.0.1+1
code_transformers 0.2.8
collection 1.1.0
core_elements 0.7.1+2
csslib 0.12.0
dart_style 0.1.8
glob 1.0.4
html 0.12.1+1
ini 1.1.0
initialize 0.6.0+4
intl 0.12.2
js 0.3.0
logging 0.9.3 (0.10.0 available)
markdown 0.7.1+2
matcher 0.11.4+4 (0.12.0-alpha.0 available)
observe 0.13.0+2
paper_elements 0.7.1
path 1.3.5
petitparser 1.3.7
polymer 0.16.1+4
polymer_expressions 0.13.1
polymer_interop 0.1.0+2
pool 1.0.1
quiver 0.21.3
smoke 0.3.2
source_maps 0.10.0+2
source_span 1.1.2
stack_trace 1.3.1
string_scanner 0.1.3+1
template_binding 0.14.0+2
utf 0.9.0+2
watcher 0.9.5
web_components 0.11.2
when 0.2.0
which 0.1.3
yaml 2.1.2
最初,代码转换器的问题迫使 code_transformers < 0.2.5 将聚合物限制为 0.16.0。看起来代码转换器的事情已经解决了,所以我已经删除了版本约束并将聚合物更新到 0.16.1。问题依然存在。
主要功能是
import 'package:polymer/polymer.dart';
import 'lib/bxglobs/bxGlobs.dart' as G;
void realMain() {
// empty for this test
}
void main() {
G.initGlobals();
initPolymer().then((zone) => zone.run(() {
Polymer.onReady.then((_) => realMain());
}));
}
和 pubspec.yaml:
name: bxPoly
description: BX GUI
dependencies:
core_elements: any
ini: any
intl: any
js: any
markdown: any
paper_elements: any
polymer: any
code_transformers: any
transformers:
- polymer:
entry_points:
- web/test.html
【问题讨论】:
-
我根据引用/未更改的源代码创建了一个项目,使用Dart 1.9.3 r45104时Dartium没有输出错误。能否请您更新帖子,说明使用了哪些版本的 Dart SDK、Dartium 和 Pub 包?
-
那么您的
main()看起来如何?您的聚合物变压器配置如何? -
if="{{aList}}"应该是if="{{alist != null}}"。 Dart 不会自动转换为bool但我不知道 Polymer 表达式(从未尝试过)。 -
谢谢。我按照您的建议更改了
aList测试。程序行为没有变化;) -
抱歉,没有想法。
标签: dart dart-polymer