【问题标题】:paper-datatable Port to Dart with custom_element_apigen: does not working使用 custom_element_apigen 到 Dart 的纸张数据表端口:不起作用
【发布时间】:2016-02-13 05:46:21
【问题描述】:

我正在尝试使用custom_element_apigen 移植到这个漂亮的paper-datatable implementation

发生了一些问题,并根据我的理解寻求解决方案(可能包括更多问题!)。

但是,仍然会引发错误并且无法继续。我需要一些关于如何移植到 Dart 的帮助!!!我将简要描述给出的步骤、错误和解决方案以及项目测试的源代码链接:

1)我按照步骤,根据https://github.com/dart-lang/custom-element-apigen。我在 Windows 上遇到了问题,但在 (custom_element_apigen: gives an error importing paper-datatable to Dart) 之后我得到了解决

2) apigen.yamlcustom_element_apigen 一起使用不清楚如何配置。 我使用“试错”方法,直到不再发生错误。原来如此:

files_to_generate:
  - paper-datatable\paper-datatable.html
  - paper-datatable\paper-datatable-column.html
  - paper-datatable\paper-datatable-edit-dialog.html
  - paper-datatable\paper-datatable-card.html
  - paper-datatable\paper-datatable-styles.html
  - paper-datatable\datatable-icons.html

files_to_load:
  - package:polymer_elements/src/paper-material/paper-material.html
  - package:polymer_elements/src/iron-ajax/iron-request.html
  - package:polymer_elements/src/iron-ajax/iron-ajax.html
  - package:polymer_elements/src/iron-form/iron-form.html
  - package:polymer_elements/src/iron-meta/iron-meta.html
  - package:polymer_elements/src/iron-icon/iron-icon.html
  - package:polymer_elements/src/iron-iconset-svg/iron-iconset-svg.html
  - package:polymer_elements/src/paper-ripple/paper-ripple.html
  - package:polymer_elements/src/paper-checkbox/paper-checkbox.html
  - package:polymer_elements/src/neon-animation/animations/opaque-animation.html
  - package:polymer_elements/src/neon-animation/animations/fade-in-animation.html
  - package:polymer_elements/src/neon-animation/animations/fade-out-animation.html
  - package:polymer_elements/src/paper-tooltip/paper-tooltip.html
  - package:polymer_elements/src/iron-resizable-behavior/iron-resizable-behavior.html
  - package:polymer_interop/src/js/debug/src/lib/template/templatizer.html
  1. paper-datatable*.(html and dart) 文件中的某些路径导入错误。体育: import 'packages\polymer_interop\src\js\debug\src\lib\template\templatizer.dart'; 我在paper_datatable_column.dart 上改成了import 'package:polymer_interop/src/behaviors/templatize.dart';

  2. 我在get defaultx => jsElement[r'default'];set defaultx(value) { jsElement[r'default'] = (value is Map || (value is Iterable && value is! JsArray)) ? new JsObject.jsify(value) : value;} 上的paper_datatable_column.dartpaper_datatable_card.dart 指令上将保留的Dart 字default 更改为defaultx

  3. 在几个聚合物组件中出现以下错误之后。体育:Failed to execute 'registerElement' on 'Document': Registration failed for type 'iron-meta'. A type with that name is already registered. 我将所有路径更改为paper-datatable*.* 文件以获得聚合物和聚合物元素的官方包(pub.dartlang)。体育:<link rel="import" href="paper_icon_button_nodart.html"><link rel="import" href="../../packages/polymer_elements/paper_icon_button_nodart.html">。注册问题不再出现!

  4. 但是现在,出现以下问题,我不知道如何解决:在调试控制台上出现以下消息:Uncaught SyntaxError: Unexpected token =>。 Web 应用程序可在浏览器上运行,但不会出现纸质数据表。

我的完整测试项目(webstorm)在https://github.com/supermuka/paper_datatable_port_dart_demo

我使用 Dart custom_element_apigen(和 apigen.yaml)的方式有问题吗?我在路径上发生了一些错误吗?我还需要更改一些其他来源?

谢谢!

【问题讨论】:

    标签: dart polymer-1.0 dart-polymer polymer-elements


    【解决方案1】:

    您很可能在编辑文件时刚刚创建了语法错误。话虽如此,内置选项可以完成您手动执行的大部分操作,这也使将来更容易更新。

    • omit_imports:这用于 files_to_generate 部分中的单个项目。它可以用来完全摆脱模板化导入,解决问题 #3。请参阅示例 here
    • name_substitutions:这用于 files_to_generate 部分中的单个项目,并允许您重命名字段。您可以使用它来解决问题 #4,例如 here
    • stubs_to_generate:此选项允许您生成实际从不同包导入元素的存根,这应该可以解决您上面列出的问题 #5。查看示例用法here

    希望这会有所帮助,并且应用这些选项只会解决您的问题。

    【讨论】:

    • 关于 omit_imports,有没有办法摆脱对同一项目的两个或多个进口?如何知道要省略哪些导入?
    • omit_imports 是一个 yaml 列表,因此您可以根据需要添加任意数量。我之前唯一需要省略的是 templatizer 导入。
    • 对于 => 语法,这是一种用于 javascript 闭包的新语法,在 dartium 中尚不支持,但在 chrome 中支持。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多