将对象添加到数组时无法读取 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);