只是警告,这是我的第一个ExtJS项目。 我已成功从网络服务器加载了两个商店。
我已经创建了第三家商店来保存我的所有结果。 现在我想查看每个位置,找到相关的市场数据记录,并进行简单的计算。
我在单击按钮时成功完成了所有操作,但我想将实际计算功能分开...传递参数。
现在只是为了让概念正常工作,我创建了一个名为' sayHello'的函数,但是我收到一条错误说明...... ReferenceError:sayHello未定义。
有人能指出我创建这个自定义函数的错误吗?
谢谢!
我的控制员......
Ext.define('ExtApplication1.view.clientdetails.clientdetailsController', {
extend: 'Ext.app.ViewController',
alias: 'controller.clientdetails-clientdetails',
onClickCalculate: function () {
console.log('calculation button was hit');
var targetGrid = Ext.getCmp('positionsGridID');
var positionsStore = targetGrid.store;
var marketDataGrid = Ext.getCmp('marketsGridID');
var marketDataStore = marketDataGrid.store;
var calculatedPositionsDataGrid = Ext.getCmp('calculatedPositionsGridID');
var calculatedPositionsDataStore = calculatedPositionsDataGrid.store;
console.log(calculatedPositionsDataStore);
positionsStore.each(function (record) {
console.log('the details for the whole position');
console.log(record);
var bbSymbol = record.get('BBSymbol');
var singleRecord;
marketDataStore.each(function (record) {
var cycleBBSymbol = record.get('BBSymbol');
if (cycleBBSymbol === bbSymbol){
singleRecord = record;
return false;
}
});
console.log('position I am evaluateing is ' + bbSymbol);
console.log('market data found for ' + singleRecord.get('BBSymbol'));
console.log(singleRecord);
//debugger;
var lastPrice = singleRecord.get('Last_Price');
var settle = singleRecord.get('Px_Settle');
var qty = record.get('Quantity');
var marketName = record.get('Description');
var pnl = (lastPrice - settle) * qty;
console.log(pnl);
calculatedPositionsDataStore.add({
BBSymbol: bbSymbol,
Description: marketName,
Quantity: qty,
CalcPLSett: pnl
});
sayHello(singleRecord);
}, this);
},
sayHello: function (singleRecord) {
alert('hello');
alert(singleRecord);
}
});
答案 0 :(得分:1)
您收到此错误是因为您超出了ViewController的范围。
在
positionsStore.each(function (record) { ...}
您在商店范围内,但sayHello函数位于ViewController范围内。
将ViewController的范围分配给变量,应解决您的问题:
onClickCalculate: function () {
console.log('calculation button was hit');
var me = this; //NEW LINE
var targetGrid = Ext.getCmp('positionsGridID');
var positionsStore = targetGrid.store;
然后在positionsStore.each
函数中使用它:
me.sayHello(singleRecord)