首页 > 解决方案 > 无论如何可以从EXTJS中的实用程序类动态访问对象吗?

问题描述

我的代码结构如下->

MyApp-> 应用程序-> 模型、视图、控制器、商店、实用程序

我为验证错误创建了以下实用程序类:

Ext.define('MyApp.shared.utils.GlobalStrings', {
         AmountLimitViolation: "Amount Limit Violated",
         DurationLimitViolation: "Duration Limit Violated"
});

我试图通过以下方式动态获取字符串,但它们不断出现未定义:

Ext.define('MyApp.controller.ViewController', {
        extend: 'Ext.grid.Panel',

        violationCheck: function (tradelimit, tradelimitViolations){
            let me = this,
            tradeViolationMessage = "";

            if(tradelimit > 0){
                for(i = 0; i < tradelimitViolations.length; i++){
                    violationString = tradelimitViolations[i] + "Violation";
                    tradeViolationMessage += GlobalStrings.violationString;
                }
            }
        }
});

tradelimitViolations 是一个字符串,其中包含如下内容: ("AmountLimit", "DurationLimit")

那么有没有什么方法可以用来动态获取 AmountLimitViolation 和 DurationLimitViolation 而不必求助于使用一长串条件语句?因为我只是展示了我遇到的许多违规错误中的两个。

标签: extjsglobal-variables

解决方案


问题是您如何“索引”到 GlobalStrings。点运算符使用右边的文本作为键,但你有一个变量来保存你的键。

尝试这个:

        for(i = 0; i < tradelimitViolations.length; i++){
            violationString = tradelimitViolations[i] + "Violation";
            tradeViolationMessage += GlobalStrings[violationString];
        }

推荐阅读