Javascript 引用在主应用程序中绘制的元素
我正在写一个Rally应用程序,其中有一个rallychart和一个按钮。 我需要访问图表并通过单击按钮修改其设置。该按钮也与rallychart位于同一应用程序容器中 我试过这个。等 这些访问说明符不起作用。你能帮我做这个吗 示例代码:Javascript 引用在主应用程序中绘制的元素,javascript,rally,appsdk2,Javascript,Rally,Appsdk2,我正在写一个Rally应用程序,其中有一个rallychart和一个按钮。 我需要访问图表并通过单击按钮修改其设置。该按钮也与rallychart位于同一应用程序容器中 我试过这个。等 这些访问说明符不起作用。你能帮我做这个吗 示例代码: Ext.define('CustomApp', { extend: 'Rally.app.App', componentCls: 'app', id: 'appid', launch: function () {
Ext.define('CustomApp', {
extend: 'Rally.app.App',
componentCls: 'app',
id: 'appid',
launch: function () {
var datepickerfrom = Ext.create('Ext.Container', {
items: [{
xtype: 'rallytextfield',
fieldLabel: 'Enter Start Date for chart (mm/dd/yyyy): ',
labelWidth: 150
}],
renderTo: Ext.getBody().dom,
id: 'd1'
});
this.add(datepickerfrom);
this.add(
{
xtype: 'rallychart',
height: 400,
width: 800,
id: 'chart1',
itemId: 'chart1',
chartConfig: chartConfig,
renderTo: Ext.getBody().dom
}
);
button2 = {
xtype: 'rallybutton',
text: 'Plot Graph',
handler: function () {
console.clear();
console.log("Clicking button");
// I NEED to ACCESS the CHART HERE or EVEN the TEXTFIELD DATA HERE
},
callback: function(){
}
};
this.add(button2);
您可以通过itemID引用它们。设置元素上的itemID后:
this.add(
{
xtype: 'rallychart',
height: 400,
itemId: 'myChart',
chartConfig: {//...}
//...
}
它可用于引用元素:
this.down('#myChart')
除了Nick所说的(通过id引用)之外,您还可以按照如下方式定义每个变量:
var pickerForm = this.add(datepickerfrom);
var chart = this.add({
xtype: 'rallychart',
height: 400,
width: 800,
id: 'chart1',
itemId: 'chart1',
chartConfig: chartConfig,
renderTo: Ext.getBody().dom
});
然后像这样引用它们:
chart.method1();
...
下面是一个示例应用程序。切换按钮显示并隐藏纸板:
Ext.define('CustomApp', {
extend: 'Rally.app.App',
componentCls: 'app',
items: [{
xtype: 'button',
text : 'Toggle Cardboard',
handler: function() {
if (App.cardBoard.isHidden()) {
App.cardBoard.show();
} else {
App.cardBoard.hide();
}
}
}],
launch: function() {
App = this;
var addNewConfig = {
xtype: 'rallyaddnew',
recordTypes: ['PortfolioItem/Feature', 'PortfolioItem/Initiative', 'PortfolioItem/Theme'],
ignoredRequiredFields: ['Name', 'Project'],
showAddWithDetails: false
};
App.addNew = this.add(addNewConfig);
var cardBoardConfig = {
xtype: 'rallycardboard',
types: ['PortfolioItem/Feature', 'PortfolioItem/Rollup'],
attribute: 'InvestmentCategory'
};
App.cardBoard = this.add(cardBoardConfig);
}
});
您也可以将其添加为id,不是吗?只有这样它才会是唯一的?我试着设置一个变量。var datepickerfrom=Ext.create('Ext.Container',{items:[{xtype:'rallytexfield',fieldLabel:'输入图表的开始日期(mm/dd/yyyyy):',labelWidth:150}],renderTo:Ext.getBody().dom,id:'d1});var dpf=this.add(datepickerfrom);然后在游戏中将其用作dpf.getValue(),但我得到以下错误:未捕获类型错误:当我尝试按上面指定的按钮单击操作访问对象时,对象[Object Object]没有方法“getValue”,而不是
dpf.getValue()
,您是否尝试过DatePickPerform.getValue()
?去掉renderTo选项-当您调用this.add时,您告诉它将其添加到应用程序中。如果这不起作用,你可能想试试尼克的方法,这是另一种方法App.down('myChart').getValue()
,这对我做App.grid=App.down('#displayArea')。add({…})
然后调用方法,如App.grid.ishiden()