内部错误:......模糊引用:'DataGrid'在库web / DataGrid.dart中定义,也在web / out / DataGrid.dart中定义

时间:2013-02-01 19:00:06

标签: dart dart-webui

我使用web-ui创建了一个简单的数据网格进行测试,并且工作得很好。然后我决定尝试将其声明为一个组件。我更改了库引用,现在它在我尝试运行应用程序时给出了上述错误。您可以在下面看到我的文件结构。当我尝试运行它时,我得到“模糊引用”消息的原因是,当我进入out目录中的自动生成的DataGrid.dart文件时,它具有以下声明

import 'DataGrid.dart';
...
import '../DataGrid.dart';

我很困惑为什么生成的代码会同时导入它们。我考虑的一件事是它可能是因为DataGridPage.html文件实例化我的DataGrid组件而我的DataGridPage.dart文件导入DataGrid.dart以便它可以引用DataGridColumn(它需要设置DataGrid的列)。在DataGridPage.dart中,我还附加到某些DataGrid事件,如SortColumnChanged和SelectionChanged,所以我需要在DataGridPage.dart中请求我的DataGrid实例的副本(我不认为有一种方法可以附加到Web组件的事件DataGridPage.html中的实例化。)

关于我做错了什么的想法?

这是我的文件结构:

DataGrid.dart
--------------------------------------------
library datagrid;
...
part 'DataGridColumn.dart';
part 'DataGridRow.dart';
class DataGrid extends WebComponent{...}    

DataGridRow.dart
--------------------------------------------
part of datagrid;
class DataGridRow {...}

DataGridColumn.dart
--------------------------------------------
part of datagrid;
class DataGridColumn {...}

DataGrid.html
--------------------------------------------
[contains the component declaration UI]

DataGridPage.html
-----------------------------------------
...
<div is="s-datagrid" id="myDataGrid" ItemsSource="{{app.Assets}}" Columns="{{app.Columns}}"></div>
...

DataGridPage.dart
--------------------------------------------
import 'DataGrid.dart';
import 'Asset.dart';
void main() {
}
DataGridApp _app;
DataGridApp get app {
  if (_app == null) {
    _app = new DataGridApp();
  }
  return _app;
}
class DataGridApp{
//provides ItemsSource and DataGridColumn data
}

1 个答案:

答案 0 :(得分:1)

jmesserly在github网站上回答了这个问题。他说你需要删除主dart文件中的组件导入。因此,在我的示例中,我将从DataGridPage.dart中删除导入的“DataGrid.dart”语句。 IDE会给你一个警告但你可以忽略它,因为它实际上是从out文件夹运行的。

GitHub Web-UI Issue 342