2

私のEnyoアプリには、さまざまなテキスト表示を含むsVirtualRepeaterとを生成するがあります。ControlIntegerPicker

このリピーターには2つの問題があります。

1)3つの行が生成された場合、行1と2をクリックすると、行0IntegerPickerの上部にドロップダウンピッカーUIが表示されます。IntegerPicker

2)をIntegerPicker使用してそれぞれを最大値で初期化しsetMax()ます。ただし、3つの行が生成された場合、IntegerPickers行0と1の最大値は行2の最大値と同じになります。

IntegerPicker1つだけが作成され、最初の行で使用されているように見えます。

をに置き換えてみましVirtualRepeaterたが、リピーター行の作成関数を変更して、trueを返すRepeaterのではなく、を含むアイテムの新しいインスタンスを返すようにしました。IntegerPickerただし、これによりエラーが発生します。

警告:enyo.Component.addComponent():重複するコンポーネント名 "itemName"は、所有者の下の一意の名前のルールに違反し、ハッシュ内の既存のコンポーネントを置き換えて続行しますが、これはエラー状態であり、修正する必要があります。

デリゲートをインラインで作成する必要があるようRepeaterですが、これは非常にエレガントではないようです。

このコードサンプルは、問題を示しています。

enyo.kind({
   name:"Test",
   kind:enyo.Control,
   components: [
      {
         kind: "VirtualRepeater",
         onSetupRow: "setupRow",
         components: [{
                name: "theIP", kind: "IntegerPicker", min:0
         }]
      }
   ],

   setupRow: function(inSender, inIndex) {
      if (inIndex < 3) {
         this.$.theIP.setMax(inIndex);
         return true;
      }
      return false;
   }
});

IntegerPickerアプリで任意の数のを作成するにはどうすればよいですか?助けていただければ幸いです。

4

1 に答える 1

0

setupRow関数でIPを使用して行っているのは、仮想リピーターの子コンポーネントである特定のIntegerPicker自体にアクセスすることです。行に対応する特定のIntegerPickerの最大値を設定するには、VirtualRepeaterに「PickerList」のような名前属性を指定します。

 kind: "VirtualRepeater",
 onSetupRow: "setupRow",
 name: "PickerList",
 components:[//this should be empty to begin with]

次に、次のようにリピーターの各行にアクセスできます。

setupRow: function(inSender, pickerMax) {

   var newPicker = new IntegerPicker(pickerMax);
   this.$.PickerList.push(newPicker);

VirtualRepeaterで特定の行を取得するには、次のようにする必要があります。

this.$.PickerList[1];

これは、VirtualRepeaterを利用する拡張Enyoチュートリアルです: https ://developer.palm.com/content/resources/develop/extended_enyo_tutorial.html

于 2012-06-04T22:05:28.797 に答える