json上的对象数组 - http put

时间:2017-04-07 17:47:56

标签: javascript json angular

我的项目中有以下Json结构:

"disputas": [
    {
      id: "",
      tipo_negociacao: "",
      historico:[{
         fl_usuario: "",
         created_at: "",
         updated_at: "",
         created_by: null,
         updated_by: null,
         texto: "",
      }]
    }
]

我想在点击按钮时添加historico的新索引但不知道如何操作,我希望它看起来像这样:

 "disputas": [
        {
          id: "",
          tipo_negociacao: "",
          historico:[{
             fl_usuario: "",
             created_at: "",
             updated_at: "",
             created_by: null,
             updated_by: null,
             texto: "",
          },
           {
             fl_usuario: "",
             created_at: "",
             updated_at: "",
             created_by: null,
             updated_by: null,
             texto: "",
          }

       ]
    }
]

到目前为止,我已经完成了这样的事情(按钮调用的功能):

     recusaProposta() {
        this.disputa.historico[this.i].texto = "something";   
        this.i++;
}

现在,自从i开始0这是第一次点击按钮时有效,但如果我再次点击它,我将收到此错误:

  

无法设置属性' texto'未定义的

有人能帮助我吗?感谢

4 个答案:

答案 0 :(得分:1)

你遇到了错误

  

无法设置未定义的属性'texto'

当您尝试访问未定义或null对象上的属性时。

首先必须在其位置创建一个空对象(如果尚未存在)。 代码的方式是,期望对象出现在您尝试访问的索引中。

var existingObj = this.disputa.historico[this.i];

// if the value is falsy, then go ahead and create
// an empty object at that index
if(!existingObj) {
   this.disputa.historico[this.i] = {};
}

existingObj.texto = "something";

答案 1 :(得分:1)

只需追加一个数组:

this.disputa.historico.push({/* your object here*/});

答案 2 :(得分:1)

只需将新项目推送到historico数组:

this.disputa.historico.push({
fl_usuario: "",
             created_at: "",
             updated_at: "",
             created_by: null,
             updated_by: null,
             texto: ""
});

答案 3 :(得分:0)

试试这个

disputas.historico.push({/* obj*/});