如何在Polymer中使用自定义Dart库?

时间:2013-12-21 20:56:40

标签: dart dart-polymer

我创建了我的库:

// web/com/jessewarden/workoutlogger/workoutloggerlib.dart
library workoutloggerlib;

import 'dart:async';
import 'dart:html';
import 'package:polymer/polymer.dart';

part "types/WorkoutTypes.dart";

part "vo/Exercise.dart";
part "vo/Set.dart";
part "vo/Workout.dart";

part "views/SetView.dart";
part "views/SetView.html";

我的SetView.dart:

part of workoutloggerlib;

@CustomTag('set-view')
class SetView extends PolymerElement
{

    @published
    Set set;

    SetView.created() : super.created();
}

它与HTML相关联:

<polymer-element name="set-vew" attributes="count">
  <template>
    <div>
        <h3>{{set.name}}</h3>
        <span class="label label-primary">Goal</span>
        <div class="input-group">
            <span class="input-group-addon">Reps</span>
            <input type="text" class="form-control disabled" value={{set.goalReps}}>
        </div>
        <div class="input-group">
            <span class="input-group-addon">Weight</span>
            <input type="text" class="form-control" value="{{set.goalWeight}}">
            <span class="input-group-addon">lbs</span>
        </div>
    </div>
  </template>
  <script type="application/dart" src="SetView.dart"></script>
</polymer-element>

然而,当她编译时,在跑步时我得到:

'http://somelocalserver/WorkoutLogger/web/com/jessewarden/workoutlogger/views/SetView.dart': error: line 1 pos 6: url expected
part of workoutloggerlib;
     ^: http://somelocalserver/WorkoutLogger/web/com/jessewarden/workoutlogger/views/SetView.dart
Internal error: 'http://somelocalserver/WorkoutLogger/web/com/jessewarden/workoutlogger/views/SetView.dart': error: line 1 pos 6: url expected
part of workoutloggerlib;
     ^
Internal error: 'http://somelocalserver/WorkoutLogger/web/com/jessewarden/workoutlogger/views/SetView.dart': error: line 1 pos 6: url expected
part of workoutloggerlib;
     ^

如果我手动导入每个文件的类,放弃我的库,它可以正常工作。显然这不是所希望的,因为代码不可管理,具有更严格的依赖性,并且更难以重构。

1 个答案:

答案 0 :(得分:1)

我不确定这是否仍然有效,但我读到最好将每个组件设置为自己的库(库不是包 - 您可以在包中包含多个库)。 我总是这样做,我从来没有遇到过问题。 您可以查看一些示例

值得一提的是,我们必须使用一个单独的包,我们将示例页面符号链接到。

目前无法在示例目录(仅限Web)中构建页面,并且不可能在Web中使用页面和在lib中的元素(在同一个包中),因为必要的聚合物变换器设置会发生冲突)。 您也可以在Web中使用元素,或者在lib中使用自己的包中的元素,并使用lib中的元素导入包。

你有一个拼写错误 - 可能只是你粘贴的代码 - 但无论如何

<!-- should be name="set-view" -->
<polymer-element name="set-vew" attributes="count">