首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有在angular2/4中调用的函数中引用组件的变量?

如何在没有在angular2/4中调用的函数中引用组件的变量?
EN

Stack Overflow用户
提问于 2018-04-03 09:05:05
回答 1查看 47关注 0票数 0

我在组件中使用ztree,有一个名为addHoverDom(treeId, treeNode)的函数,它是在组件中定义的,但是它不会像通常那样被调用。职能如下:

代码语言:javascript
复制
 addHoverDom(treeId, treeNode) {
    let aObj = $("#" + treeNode.tId + "_a");
    let addBtnId = "diy_add_" + treeNode.tId;
    let ztree = $.fn.zTree.getZTreeObj(treeId);
    if ($("#" + addBtnId).length == 0) {
      $("#" + addBtnId).bind("click", function() {
        //reference a variable of the component here
      });
    }
}

它是这样命名的:

代码语言:javascript
复制
setting: Object = {
  callback: {
    onClick: this.zTreeOnClick
  },
  view: {
    addHoverDom: this.addHoverDom,
    removeHoverDom: this.removeHoverDom
  }
};

现在我想在函数中获得组件的一个变量,我尝试了组件name.prototype并将它重命名为该变量,但是没有人能帮上忙吗?非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-03 09:21:47

假设函数addHoverDom是在要引用的组件中定义的,您可以使用箭头函数来保持上下文,并在函数addHoverDom中直接使用this引用组件的字段,参见下面的示例:

代码语言:javascript
复制
addHoverDom(treeId, treeNode) {
  ...
  if ($("#" + addBtnId).length == 0) {
    $("#" + addBtnId).bind("click", () => {       // use arrow function to keep context
      //reference a variable of the component here
      // example code
      this.variable_name = 'test';
      const test = this.variable_name;      
    });
  }
}

此外,您可能需要为addHoverDom的回调保留上下文

代码语言:javascript
复制
setting: Object = {
  callback: {
    onClick: this.zTreeOnClick
  },
  view: {
    addHoverDom: this.addHoverDom.bind(this),     // bind this to keep the context
    removeHoverDom: this.removeHoverDom
  }
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49626138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档