extjs-使用传递的参数创建自定义函数

ext js - create custom function with passed parameters

本文关键字:参数 创建 自定义函数 extjs-      更新时间:2024-05-10

只是一个警告,这是我的第一个ExtJS项目。我已经成功地从Web服务器加载了两个存储。

  1. 包含位置的存储
  2. 包含市场数据的商店

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

我已经成功地完成了这一切,只需点击一个按钮,但我想把做实际计算的功能分开。。。传入参数。

现在,为了让这个概念发挥作用,我创建了一个名为"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);
}

});

出现此错误是因为您超出了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)