2012-12-17 13 views
1

我一直在关注Dart web-ui codelab。当我将Dart源代码嵌入到Web组件.html文件中时,我没有在Dart编辑器中获得任何静态分析或自动完成支持(这是http://code.google.com/p/dart/issues/detail?id=7449的开放式错误)。因此,我正在通过使用src属性寻找临时解决方法。如何链接到包含我的Web组件的构造函数的外部Dart库?

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

<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需求是一个飞镖库,并会包含:

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)最终仅投入out/foo_embed.dart而且也没有用于产生out/foo.html.dart导入application.dart

正如预期的那样,粘贴的foo_embed.dart内容作为内部foo.html直接(如代码实验室完成)与build.dart的作品,我可以启动我的webapp在Dartium,所以我似乎没有任何其他的语法内联脚本我的项目出现问题。

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

回答

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,我看到一个输入数据与其绑定。

+0

感谢您的回复。我认为我的问题是通过升级web_ui并更改我的导入来解决的。在删除了旧的'web/out /'目录后,将'foo_embed.dart'重命名为'foo.dart',并用web_ui 0.2.10 + 2重新运行'build.dart',我现在甚至都看不到生成的' out/foo.html.dart'文件。因此,我在'application.dart'(从codelab的'foo.html.dart'导入)中将我的导入改为'out/foo.dart'并且它正在工作!看着0.2.10 + 2的更新日志提到了build.dart的改变,所以也许这解决了我的问题?)我会接受你的答案,因为它确实表明外部脚本工作。 – shindokaku

相关问题