EXTJS将数据传递到另一个JS存储
我是EXTJS新手。我正在使用ExtJS4.2开发应用程序。我有一个显示Unix服务器详细信息列表的网格。我有两个JS,一个是serverdetails.JS,显示网格中的所有服务器,另一个是pie.JS,显示饼图。我的要求是,当我从ServerDetails.js中的网格中选择服务器并单击按钮时,它会转到dao层以获取服务器详细信息,现在我必须将此服务器详细信息传递到饼图js Ext.data.Store对象。如何将这些服务器详细信息传递给饼图JS? 下面是我的代码。 在网格上,我有一个仪表板按钮,显示网格中选定行的饼图。下面是代码EXTJS将数据传递到另一个JS存储,extjs,extjs4.2,Extjs,Extjs4.2,我是EXTJS新手。我正在使用ExtJS4.2开发应用程序。我有一个显示Unix服务器详细信息列表的网格。我有两个JS,一个是serverdetails.JS,显示网格中的所有服务器,另一个是pie.JS,显示饼图。我的要求是,当我从ServerDetails.js中的网格中选择服务器并单击按钮时,它会转到dao层以获取服务器详细信息,现在我必须将此服务器详细信息传递到饼图js Ext.data.Store对象。如何将这些服务器详细信息传递给饼图JS? 下面是我的代码。 在网格上,我有一个仪表板
showDashBoard : function(button) {
var grid = Ext.ComponentQuery.query('serverdetailslist')[0];
var sm = grid.getSelectionModel();
var rs = sm.getSelection();
if (!rs.length) {
Ext.Msg.alert('Info', 'No Server Details Selected');
return;
}else{
dashBoardServerDetail = rs[0].getData();
var url = '/TechnologyTrackPortal/dashboard/loadDashBoard.action';
Ext.Ajax.request({
url : url,
method : 'POST',
jsonData: dashBoardServerDetail,
success: function(response){
var iResult = response.responseText;
Ext.create('resources.script.Pie');
}
});
}
}
response.responseText以jason格式提供数据。现在我如何将这个jason dat传递到pie.js文件。下面是我的pie.js文件
Ext.onReady(function () {
Ext.define('DashBoardModel', {
extend: 'Ext.data.Model',
fields: [
{name: 'title', type: 'string'},
{name: 'size', type: 'string'}
]
});
var store = Ext.create('Ext.data.Store', {
storeId : 'DashBoardStoreId',
model : 'DashBoardModel',
fields : ['title', 'size'],
autoLoad: false,
autoSync: true
});
var chart = Ext.create('Ext.chart.Chart', {
alias : 'widget.dashBoardPieChart',
title : 'Technology Portal',
store : store,
theme: 'Base:gradients',
legend: {
position: 'bottom'
},
series: [
{
type: 'pie',
angleField: 'size',
showInLegend: true,
label: {
field: 'title',
display: 'outside',
font: '12px Arial',
calloutLine: true
},
highlight: {
segment: {
margin: 20
}
},
label: {
field: 'title',
display: 'rotate',
contrast: true,
font: '18px Arial'
},
tips: {
trackMouse: true,
width: 120,
renderer: function(storeItem, item) {
this.setTitle(storeItem.get('title') + ': ' + storeItem.get('size') + '%');
}
}
}
]
});
var panel1= Ext.create('widget.panel', {
// extend : 'widget.panel',
width: 800,
height: 600,
title: 'Server',
alias : 'widget.dashBoardForm',
renderTo: Ext.getBody(),
layout: 'fit',
tbar: [{
text: 'Save Chart',
handler: function() {
Ext.MessageBox.confirm('Confirm Download', 'Would you like to download the chart as an image?', function(choice){
if(choice == 'yes'){
chart.save({
type: 'image/png'
});
}
});
}
}],
items: chart
});
我希望我的观点是清楚的。
谢谢
Sach您需要将其视为一个应用程序,一个内存空间,代码分为两个.js文件,没有多大区别,它们都必须加载到主html、asp、php或其他文件中。在这个memoryspace中,如果变量和对象以前声明过,那么可以相互引用。实现您的要求的最简单的方法是使用一个存储并将其用于两个视图。因此,将存储区中的数据加载到ServerDetails.js中,并让图表使用相同的存储区
我有一些ExtJs应用程序可以做到这一点,但它们是3.3.1版的,暂时不在我的掌握之中。希望这能有所帮助。您需要将其视为一个应用程序,一个内存空间,代码分为两个。js文件没有多大区别,它们都必须加载到主html、asp、php或其他文件中。在这个memoryspace中,如果变量和对象以前声明过,那么可以相互引用。实现您的要求的最简单的方法是使用一个存储并将其用于两个视图。因此,将存储区中的数据加载到ServerDetails.js中,并让图表使用相同的存储区 我有一些ExtJs应用程序可以做到这一点,但它们是3.3.1版的,暂时不在我的掌握之中。希望这有帮助