2

我一直在关注 Dart web-ui codelab。当我将 dart 源代码嵌入到 Web 组件.html文件中时,我在 Dart 编辑器中没有获得任何静态分析或自动完成支持(此http://code.google.com/p/dart/issues/存在一个未解决的错误详细信息?id=7449)。因此,我正在寻找使用 src 属性的临时解决方法。

根据规范,Dart 中的 Web 组件支持 src 属性: https ://www.dartlang.org/articles/dart-web-components/spec.html#behavior 。我尝试链接到外部 Dart 库:给定一个foo.htmlWeb 组件

<element name="x-foo-component" constructor="FooComponent" extends="div">

我想链接到foo_embed.dart与我的 Web 组件相同的目录中的一个单独文件,该组件定义FooComponent,通过添加:

<script type="application/dart" src="foo_embed.dart"></script>

foo.html。按照规范的建议,foo_embed.dart需要是一个 Dart 库,并且包含:

library foo_embed;
import 'package:web_ui/web_ui.dart';
class FooComponent extends WebComponent {
    ...
}

当我尝试这个时,运行build.dart(从这些说明http://www.dartlang.org/articles/dart-web-components/tools.html)最终只放入foo_embed.dart并且out/没有out/foo.html.dart生成用于导入的application.dart.

正如预期的那样,直接将 的内容foo_embed.dart作为内联脚本粘贴到内部foo.html(如在 codelab 中所做的那样)适用于build.dart,并且我可以在 Dartium 中启动我的 webapp,因此我的项目中似乎没有任何其他语法问题。

我可能在某处有一个简单的语法错误吗?或者这是 Dart Web 组件编译器的临时限制?谢谢。

4

1 回答 1

2

我无法重现您的问题。

这对我有用:

lib/foo.dart

library foo;

import 'package:web_ui/web_ui.dart';

class FooComponent extends WebComponent {
  var foo = 'asddfg';
}

lib/foo.html

<element name="x-foo" constructor="FooComponent" extends="div">
  <template>
    <input value="{{ foo }}" />
  </template>
  <script type="application/dart" src="foo.dart"></script>
</element>

示例/test.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <link rel="components" href="packages/foo/foo.html" />
  </head>
  <body>
    <x-foo></x-foo>

    <script type="application/dart">main() {}</script>
    <script type="text/javascript" src="https://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js"></script>
  </body>
</html>

然后我打开 Dartium 并转到.../example/out/test.html,我看到一个输入正确绑定了数据。

于 2012-12-18T14:48:33.330 回答