gpt4 book ai didi

javascript - ExtJS:如何在另一个函数中调用一个函数?

转载 作者:行者123 更新时间:2023-12-01 02:29:38 25 4
gpt4 key购买 nike

我知道有很多关于在另一个函数中调用函数的问题,但不幸的是,这些问题都不适合我,或者我无法在我的项目中实现!

我有一个 Window 类,里面声明了两个函数。第二个是通过组合框获取带有 ID 的特定 URL 并返回它。我需要在第一个 function 中使用这个生成的 URL

getSelectCountry: function(){
var countryRecord = Ext.ComponentQuery.query('[name=country]')[0].getSelectedRecord();
var countryId = countryRecord.get('id');
var urlWithId = MyApp.Globals.getUrl() + '/city/view/list/?countryid='+ countryId;

// var store = Ext.getStore('cityCombo');
// store.load({
// url : MyApp.Globals.getUrl() + '/city/view/list/?countryid='+ countryId,
// });

return urlWithId;
}

我需要在citycombo中使用这个返回的urlWithId,位于proxyurl内。它将列出取决于以下国家/地区的城市;

Ext.define('MyApp.view.weather.SettingsWindow', { 
...
getSettingsItems: function () {
var me = this;

var settingsItems = [
{
xtype: 'form',
layout: {type: 'vbox', align: 'stretch', pack: 'start'},
reference: 'settingsForm',
items: [
{
xtype: 'citycombo',
itemId: 'cityName',
name: 'city',
afterLabelTextTpl: MyApp.Globals.required,
allowBlank: false,
flex: 1,
store: {
storeId: 'cityCombo',
proxy: {
type: 'ajax',
// I neeed returned URL with ID on here.
url: MyApp.Globals.getUrl() + '/city/view/list/',
reader: {
type: 'json',
rootProperty: 'data'
}
},
pageSize: 0,
sorters: 'description',
autoLoad: true
}
},

我尝试过使用 store.load 或创建一个新变量并调用它,但任何尝试都无法成功。

任何想法我都会很高兴。

<小时/>

更新

  • 请检查那些屏幕截图:UIcode structure
  • 我正在尝试获取由 getSelectCountry 函数 (1) 生成的完整 URL 并过滤 citycombo< 上的城市查询 与此新返回的 URL (2)

最佳答案

我看到两种可能性:

  1. 扩展亚历山大的解决方案。假设cityCombo已定义 beforeload 回调设置 urlextraparams ,您定义一个change country 上的监听者组合框,并调用 cityCombo's load()从那里。

见下文:

listeners: {
change: function () {
Ext.getStore('cityCombo')
.load()
}
}

或者更好的是,删除 beforeload从商店中购买并将其放入 change 中第一个 combobox

listeners: {
change: function (combo, newValue) {
var cityStore = Ext.getStore('cityCombo')
cityStore.getProxy()
.setUrl(getSelectedCountry());

cityStore.load();
}
}

注意:您可以进一步重构它,去掉 getSelectedCountry()并在监听器传递的组合上执行所有操作

  • cityCombo使用过滤器而不是往返
  • 编辑:修复了第一个代码块的显示,添加缺少 load()打电话。

    关于javascript - ExtJS:如何在另一个函数中调用一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48404145/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com