2

私はDartweb-uiコードラボをフォローしています。DartソースコードをWebコンポーネントファイルに埋め込む.htmlと、Dartエディターで静的分析またはオートコンプリートのサポートが得られません(このhttp://code.google.com/p/dart/issues/には未解決のバグがあります) detail?id = 7449)。したがって、src属性を使用して一時的な回避策を探しています。

仕様によると、src属性はDartのWebコンポーネントでサポートされています: https ://www.dartlang.org/articles/dart-web-components/spec.html#behavior 。外部のDartライブラリにリンクしてみましたfoo.html

<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.dartapplication.dart

予想どおり、の内容をfoo_embed.dartインラインスクリプトfoo.htmlとして(コードラボで行われるように)直接内部に貼り付けると、で機能し、Dartiumbuild.dartでWebアプリを起動できるため、プロジェクトで他の構文上の問題は発生しないようです。

おそらくどこかに単純な構文の間違いがありますか?それとも、これは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>

example / 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 に答える