0

1つのコントローラー(ControllerA)が別のコントローラー(ControllerB)をロードしているExtJS4アプリケーションがあります。コントローラーAには、コントローラーBに設定する必要のあるユーザー入力があります。これにより、コントローラーBがプルダウンをロードしたときに、デフォルトでそれらのプルダウンを正しい値にジャンプできます。

ControllerAから適切に値を渡すことができます。

itemClick: function itemClick(distributor, product) {
  var ctrlr = this.getController('Internal.controller.Popup');
  var win = ctrlr.openWin(distributor, product);
  ctrl.init();
}

openwin関数は値を取得します。その関数でこれらの値を保存して、ControllerBの他の関数がそれらが存在するかどうかを確認し、存在する場合はコンボボックスを適切に設定できるようにする方法がわかりません。例:

openWin: function openWin(distributor, product) {
  var win = Ext.create('Ext.window.Window', {
    ...
  });
  // Somehow set distributor and product
  return win;
}
loadDistributorBox: function loadDistributorBox(str) {
  //Listener for Ajax load of combobox values
  var combobox = Ext.ComponentQuery.query('combobox')[0];
  var items = str.getRange();
  if (isset(distributor)) {
    // Move the pulldown to the item that matches
  } else {
    // Show the default first value
  }
}
4

1 に答える 1

1

初め

他の関数を呼び出す前に、コントローラーを初期化します。

itemClick: function itemClick(distributor, product) {
  var ctrlr = this.getController('Internal.controller.Popup');
  ctrl.init();
  var win = ctrlr.openWin(distributor, product);
}

2番

引数があるかどうかを確認して設定してください。そのためには、ベースフォームのsetValuesメソッドを使用できます

openWin: function openWin(distributor, product) {
  var win = Ext.create('Ext.window.Window', {
    ...
  });
  var form = win.down('form').getForm();
      setObj = {};
  if (distributor) {
     setObj['DistributorFieldName'] = distributor;
  }

  if (product) {
     setObj['ProductFieldName'] = product;
  }
  // set the values
  form.setValue(setObj );

  return win;
}
于 2012-11-19T15:18:04.103 に答える