1

テスト用に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
}
4

1 に答える 1

1

jmesserlyはgithubサイトでこれに答えています。彼は、メインのdartファイルのコンポーネントのインポートを削除する必要があると述べました。したがって、私の例では、import'DataGrid.dart'ステートメントをDataGridPage.dartから削除します。IDEは警告を表示しますが、実際にはoutフォルダーから実行されるため、無視してかまいません。

GitHub Web-UI Issue 342

于 2013-02-02T00:24:41.610 に答える