gpt4 book ai didi

javascript - ext js - 使用传递的参数创建自定义函数

转载 作者:行者123 更新时间:2023-12-03 07:12:25 26 4
gpt4 key购买 nike

只是警告,这是我的第一个 ExtJS 项目。我已成功从网络服务器加载了两个商店。

  1. 包含职位的商店
  2. 包含 marketData 的商店

我创建了第三个商店来保存我的所有结果。现在我想遍历每个仓位,找到关联的市场数据记录,并运行一个简单的计算。

我已经在单击按钮的事件中成功完成了此操作,但我想分离出进行实际计算的功能...传递参数。

现在,为了让这个概念发挥作用,我创建了一个名为“sayHello”的函数,但我收到一条错误消息……ReferenceError:sayHello 未定义。

有人可以指出我创建此自定义函数时做错了什么吗?

谢谢!

我的 Controller ...

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);
}

});

最佳答案

您收到此错误是因为您超出了 ViewController 的范围。

positionsStore.each(function (record) { ...}

您位于 store 范围内,但 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)

关于javascript - ext js - 使用传递的参数创建自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36577515/

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