ember.js 将对象添加到数组时,无法读取恩格尔JS中未定义的属性“kind”

h4cxqtbf  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(126)

我是ember js的新手,下面是我从selectedEntities数组创建标签数组的代码。它的控制台成功地记录了selectedEntities数组中的值,但当将创建的对象(标签)值添加到标签数组时,它总是给出“无法读取未定义的属性'标签'”。如何解决这个问题。

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');
      }
}
lymgl2op

lymgl2op1#

这是因为你在forEach调用中使用了一个function关键字。当你这样做的时候,它有自己的this,当然这个this里面没有任何标签。要么使用箭头函数,比如.forEach(e => {,要么把外部的this保存到一个变量中:

openTestModal() {
  const self = this;
  this.selectedEntities.forEach(function (e){
  ...
    self.tags.pushObject(tag);

相关问题