我正在尝试使用适用于Material Design Web App的Google I / O codelab,但将其移植到Dart语言。 http://io2014codelabs.appspot.com/static/codelabs/polymer-build-mobile/#4
我正在切换抽屉的那一步,但我无法弄清楚飞镖的等价物。
切换抽屉的JS代码如下所示:
<script>
Polymer('codelab-app', {
toggleDrawer: function() {
this.$.drawerPanel.togglePanel();
}
});
</script>
我在我的CodelabApp课程中尝试了以下内容,但我得到了NoSuchMethodError: method not found: 'togglePanel'
@CustomTag('codelab-app')
class CodelabApp extends PolymerElement {
CodelabApp.created() : super.created() {}
void toggleDrawer() {
querySelector('core-drawer-panel')..togglePanel();
}
}
我的按钮元素正常触发,但我无法弄清楚如何调用抽屉的togglePanel方法。 <paper-icon-button icon="menu" on-click="{{toggleDrawer}}"></paper-icon-button>
非常感谢任何对正确文档的帮助或指导。
最新版本已修复此问题:https://github.com/dart-lang/core-elements/issues/39
更新聚合物和core_elements库可以按预期工作。
答案 0 :(得分:3)
在尝试提交我自己的修复程序时,我发现了一个适用于我的临时解决方法。也许会对你有用:)
将以下内容添加到文件顶部:
import 'dart:js' show JsObject;
_js(x) => new JsObject.fromBrowserObject(x);
然后更改自定义代码:
@CustomTag('codelab-app')
class CodelabApp extends PolymerElement {
CodelabApp.created() : super.created() {}
void toggleDrawer() {
_js(shadowRoot.querySelector('core-drawer-panel')).callMethod('togglePanel');
}
}
作为参考,我通过阅读以下代码找到了这个解决方案: https://github.com/dart-lang/core-elements/blob/master/example/core_drawer_panel.html#L68-L81