0

私は次のコード(index.js)を持っています:

<Alloy>
  <Window id="home" >
    <View id="formulaire">
	  <Require type="view" id="etape_1_form" src="form/etape_1" />
	</View>
  </Window>
</Alloy>

etape_1_form.xml では、次のピッカー ウィジェットを使用する必要があります: danielhanold.pickerwidget

このウィジェットを etape_1_form.js (コントローラー) 内で使用する簡単な方法を次に示します。

Alloy.createWidget('danielhanold.pickerWidget', {
  id: 'mySingleColumn',
  outerView: $.home,
  hideNavBar: false,
  type: 'single-column',
  selectedValues: [20],
  pickerValues: [{10: 'Auburn', 20: 'Bald', 30: 'Black', 40: 'Blond', 50: 'Brown'}],
  onDone: function(e) {
    // Do something
  },
});

$.form_win.open();

ピッカーを開く代わりに、この行から現在のウィンドウにアクセスできないため、エラーがスローされます。

outerView: $.home
The error : "undefined is not an object (evaluating 'outerView.add')

ピッカーを index.js (メイン コントローラー) に移動すると、ピッカーは機能しますが、必要なフォームが多く、コードを整理したいので、各フォームの js コードをコントローラー ファイル内に配置するのが好きです。

では、必要なビューから $.home ウィンドウにアクセスするにはどうすればよいですか? ご協力ありがとうございました。

4

1 に答える 1

0

いいえ、直接できません。

ただし、「グローバル」を使用すると、これを簡単に回避できます。

index.js の場合:

Alloy.Globals.indexController = $;

etape_1_form.js について

outerView: Alloy.Globals.indexController.home
于 2016-06-10T14:24:33.767 に答える