2012-11-19 43 views
0

我有一个ExtJS4应用程序,其中一个控制器(ControllerA)正在加载另一个控制器(ControllerB)。控制器A有一些我需要在ControllerB中设置的用户输入,因此当ControllerB加载下拉时,它可以默认将这些下拉跳转到正确的值。ExtJS4在控制器中的设置值

我可以从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 
    } 
} 

回答

1

首先

在调用任何其他函数之前初始化控制器。

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

检查,如果你有参数和设置。对于您可以使用音素表示对6K

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; 
} 
+0

恭喜:) – dbrin

+0

@dbrin LOL的setValues方法。谢谢 :) – sra