テスト用にweb-uiを使用して必要最低限のデータグリッドを作成し、正常に機能させました。それから私はそれをコンポーネントとして宣言しようと決心しました。ライブラリ参照を変更しましたが、アプリケーションを実行しようとすると上記のエラーが発生します。以下に私のファイル構造を示します。実行しようとすると「あいまいな参照」メッセージが表示される理由は、outディレクトリにある自動生成されたDataGrid.dartファイルにアクセスしたときに、次の宣言があったためです。
import 'DataGrid.dart';
...
import '../DataGrid.dart';
生成されたコードが両方をインポートする理由について私は混乱しています。私が考えたのは、DataGridPage.htmlファイルがDataGridコンポーネントをインスタンス化し、DataGridPage.dartファイルがDataGrid.dartをインポートしてDataGridColumnへの参照を持つことができるためである可能性があります(DataGridの列を設定する必要があります)。DataGridPage.dartでは、SortColumnChangedやSelectionChangedなどの特定のDataGridイベントにもアタッチするため、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
}