聚合物 - 镖等效函数

时间:2014-07-01 11:24:08

标签: dart dart-polymer

我正在尝试使用适用于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>

非常感谢任何对正确文档的帮助或指导。

UPDATE:

最新版本已修复此问题:https://github.com/dart-lang/core-elements/issues/39

更新聚合物和core_elements库可以按预期工作。

1 个答案:

答案 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