2

入力テキストは、次のような反復可能な繰り返しを使用して DOM に挿入されます。

HTML:

<template repeat="value in listValue">
  <input type="text" bind-value="listValue[$index]">
</template>

ダーツ:

List listValue = toObservable(["value one", "value two"]);

フォーカスに問題があります。入力フィールドのいずれかに文字を入力すると、DOM が再表示され、フォーカスが失われます。これはフォーカスバグによるものです

どうすればこれを機能させることができますか?

4

1 に答える 1

0

フォーカスの問題は、WebUI が現在、リスト内の個々のエントリへの変更をリスト自体への一般的な変更と見なしているため、編集のたびにテンプレート全体を繰り返しレンダリングする結果です。1 レベルの間接化を追加することで、必要な動作を得ることができます。ここでの考え方は、値の変更とリストの変更を区別しやすくすることです。

たとえば、文字列値のリストを持つ代わりに、次のように文字列値への監視可能な参照のリストにします。

html:

<template repeat="value in listValue">
  <input type="text" bind-value="value.value">
</template>

ダーツ:

import 'package:web_ui/web_ui.dart';
List listValue = toObservable([]);

void main() {
  listValue.add(new ObservableReference("value one"));
  listValue.add(new ObservableReference("value two"));
}
于 2013-06-13T18:11:04.260 に答える