【问题标题】:TypeScript - Accessing a variable in a inner objectTypeScript - 访问内部对象中的变量
【发布时间】:2018-05-31 19:23:58
【问题描述】:

我有一个类型脚本类,它接受一个 url(字符串)作为构造函数中的参数。在类中,我有另一个类,它是 devextreme 数据网格的视图模型。我面临的问题是我不知道如何访问内部对象(GridViewModel)中的 url 属性,该对象具有作为其中一部分的功能。

export class MyClassOne {
    private myUrl: string;

    constructor(url: string) {
        this.myUrl = url;
    }

    public GridViewModel = {
        dataGridOptions: {
            dataSource : { store: someSource}
                   ...
            aFunction:  function(e){

                // this.myUrl is undefined
                var postUrl =  this.myUrl;               
            }             
        }
    }
}  
var myClassOne = new MyClassOne("https://www.google.com"); 

我的问题是,如何在内部对象函数中访问“this.myUrl”?请帮忙

谢谢,

【问题讨论】:

  • 你需要一个实例。
  • 我不明白。你指的是什么“内部阶级”?你指的是GridViewModel吗?那不是“内部阶级”。它只是一个属性。
  • 是的,GridViewModel。我会更新问题。
  • 有人知道我是否写错了投票的问题吗?在来这里寻求帮助之前我做了研究
  • 你的问题没有意义。没有“内部阶级”。

标签: javascript typescript devextreme dx-data-grid


【解决方案1】:

'this' 的范围在函数内部发生了变化。你可以创建一个 箭头函数 保留范围或使用 self 变量 保持外部范围。

例如带有箭头操作符的函数。您的功能可以替换为

e => {
var postUrl =  this.myUrl;              
}

【讨论】:

  • 嗨,富兰克林,你能举个例子吗?
  • 我想我快到了
  • 感谢您的提示,确实,这就是我所需要的。将 function(e) 替换为 e=>
【解决方案2】:

所以,基本上我需要用 e=> 替换 function(e) 以保留 'this' 的范围

export class MyClassOne {
    private myUrl: string;

    constructor(url: string) {
        this.myUrl = url;
    }

    public GridViewModel = {
        dataGridOptions: {
            dataSource : { store: someSource}
                   ...
            aFunction:  e => {

                // this.myUrl is undefined
                var postUrl =  this.myUrl;               
            }             
        }
    }
}

var myClassOne = new MyClassOne("https://www.google.com"); 

【讨论】:

    猜你喜欢
    • 2016-07-28
    • 2018-05-09
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多