gpt4 book ai didi

ajax - extjs:如何在列渲染器中使用 ajax 调用?

转载 作者:行者123 更新时间:2023-12-02 22:43:57 25 4
gpt4 key购买 nike

我现在得到的是:

renderer : function(value) {
var ret;
var conn = new Ext.data.Connection();
conn.request({
method : 'POST',
url : rsdBackend,
params : {
get_object_by_id : 'true',
rsd_type : record.data.references_table,
object_id : value,
uid : logged_user_id
},
success : function(responseObject) {
var data = Ext.decode(responseObject.responseText);
ret = data[0].object_name;
}
});
return ret;
}

如果列包含指向另一个数据的链接(数据库术语中的外键),我需要显示它引用的对象的名称。

因此,我能想到的最佳方法是在渲染器中使用 ajax 调用。它有效,但问题是:我如何返回响应?

上面的代码不会工作,因为 ret 在我试图返回它的地方是未定义的。

如何做到这一点,或者有更好的方法吗?

最佳答案

基于此线程 Sencha forum thread

我做了一个异步渲染器。

在我的示例中,我想显示我的记录关联中第一条记录的“名称”值。

“fileRecord_store()”是我的关联存储的名称(通过“hasMany”关联模型创建)

在网格面板中,您可以制作这样的渲染器:

 { header: 'Filename',  dataIndex: 'Files_id',      flex: 2,
renderer: function(value, meta, record, rowIndex, colIndex, store, view) {
var divId = 'my_cell_to_update_' + record.id;
record.columnsNameUpdate(divId);
return String.format("<div id='" + divId + "'>Loading...</div>");
}
},

现在在模型类中我添加了这个函数:

columnsNameUpdate : function(divId){

this.fileRecord_store().on('load', this.updateColumn,this, {divId : divId});
this.fileRecord_store().load();
},

updateColumn : function(store, model, success, options){
this.fileRecord_store().un('load', this.updateColumn,this);
Ext.fly(options.divId).update(store.first().get('filename'));
}

它对我来说很好用!

关于ajax - extjs:如何在列渲染器中使用 ajax 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10331986/

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