将对象添加到数组时无法读取 enger JS 中未定义的 属性 'kind'
Cannot read property 'kind' of undefined in enger JS when adding objects to array
我是 ember js 的新手,下面是我从 selectedEntities 数组创建标签数组的代码。它成功的控制台记录了 selectedEntities 数组中的值,但是当将创建的对象(标签)值添加到标签数组时,它总是给出“无法读取未定义的 属性 'tags'”。如何解决这个问题。
export default class Merchants extends Controller.extend(DebounceQueryParams) {
tags= A([]);
selectedEntities = A([]);
@action
openTestModal() {
this.selectedEntities.forEach(function (e){
console.log("name ", e.contactInfo.contactName);
console.log("e.id ", e.id);
if(e.workflowTask !==null){
console.log("e.workflowTask.currentStatus ", e.workflowTask.currentStatus);
const tag = {
id: e.id,
name: e.contactInfo.contactName,
status: e.workflowTask.currentStatus
};
this.tags.pushObject(tag);
}
const tag = {
id: e.id,
name: e.contactInfo.contactName,
status: e.workflowTask.currentStatus
};
this.tags.pushObject(tag);
});
this.remodal.open('user-assign');
}
}
那是因为您在 forEach 调用中使用了 function
关键字。当你这样做时,它有自己的 this
并且这个 this
肯定没有任何标签。
使用箭头函数,即 .forEach(e => {
或将外部 this
保存到变量中:
openTestModal() {
const self = this;
this.selectedEntities.forEach(function (e){
...
self.tags.pushObject(tag);
我是 ember js 的新手,下面是我从 selectedEntities 数组创建标签数组的代码。它成功的控制台记录了 selectedEntities 数组中的值,但是当将创建的对象(标签)值添加到标签数组时,它总是给出“无法读取未定义的 属性 'tags'”。如何解决这个问题。
export default class Merchants extends Controller.extend(DebounceQueryParams) {
tags= A([]);
selectedEntities = A([]);
@action
openTestModal() {
this.selectedEntities.forEach(function (e){
console.log("name ", e.contactInfo.contactName);
console.log("e.id ", e.id);
if(e.workflowTask !==null){
console.log("e.workflowTask.currentStatus ", e.workflowTask.currentStatus);
const tag = {
id: e.id,
name: e.contactInfo.contactName,
status: e.workflowTask.currentStatus
};
this.tags.pushObject(tag);
}
const tag = {
id: e.id,
name: e.contactInfo.contactName,
status: e.workflowTask.currentStatus
};
this.tags.pushObject(tag);
});
this.remodal.open('user-assign');
}
}
那是因为您在 forEach 调用中使用了 function
关键字。当你这样做时,它有自己的 this
并且这个 this
肯定没有任何标签。
使用箭头函数,即 .forEach(e => {
或将外部 this
保存到变量中:
openTestModal() {
const self = this;
this.selectedEntities.forEach(function (e){
...
self.tags.pushObject(tag);