如何在angular2/4中未调用的函数中引用组件的变量?
How to reference a variable of the component in a function not called in angular2/4?
我在我的组件中使用 ztree,有一个名为 addHoverDom(treeId, treeNode)
的函数,它是在组件中定义的,但它不会以 angular 的方式被调用通常会。下面是函数:
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
});
}
}
这就是它的名字:
setting: Object = {
callback: {
onClick: this.zTreeOnClick
},
view: {
addHoverDom: this.addHoverDom,
removeHoverDom: this.removeHoverDom
}
};
现在我想在函数中获取组件的变量,我尝试了组件name.prototype
并将其重命名为那个,但都没有用,有人可以帮忙吗?非常感谢。
假设函数addHoverDom
定义在你要引用的组件中,你可以使用箭头函数来保持上下文并使用this
直接在函数 addHoverDom
中引用组件的字段,参考下面的例子:
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
的回调保留上下文
setting: Object = {
callback: {
onClick: this.zTreeOnClick
},
view: {
addHoverDom: this.addHoverDom.bind(this), // bind this to keep the context
removeHoverDom: this.removeHoverDom
}
};
我在我的组件中使用 ztree,有一个名为 addHoverDom(treeId, treeNode)
的函数,它是在组件中定义的,但它不会以 angular 的方式被调用通常会。下面是函数:
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
});
}
}
这就是它的名字:
setting: Object = {
callback: {
onClick: this.zTreeOnClick
},
view: {
addHoverDom: this.addHoverDom,
removeHoverDom: this.removeHoverDom
}
};
现在我想在函数中获取组件的变量,我尝试了组件name.prototype
并将其重命名为那个,但都没有用,有人可以帮忙吗?非常感谢。
假设函数addHoverDom
定义在你要引用的组件中,你可以使用箭头函数来保持上下文并使用this
直接在函数 addHoverDom
中引用组件的字段,参考下面的例子:
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
setting: Object = {
callback: {
onClick: this.zTreeOnClick
},
view: {
addHoverDom: this.addHoverDom.bind(this), // bind this to keep the context
removeHoverDom: this.removeHoverDom
}
};