在ember中无法正常使用javascript添加或更改JSON键的值

时间:2018-04-01 18:55:04

标签: javascript ember.js handlebars.js

在.hbs文件中我尝试打开弹出窗口并使用包含的代码。

template.hbs



{{#each adultJsonArr as |adultTravellerDetails index|}}
    {{my-s3-uploader class = 'uploader-button'}}
    <div class="mdl-cell mdl-cell-6-col ">
        {{#if (eq adultTravellerDetails.id_update_status 'available')}}
            <p>UPDATE ID Proof</p>
        {{/if}}
        {{#if (eq adultTravellerDetails.id_update_status 'never_added')}}
            <p>ADD ID Proof</p>
        {{/if}}
    </div>
{{/each}}
&#13;
&#13;
&#13;

所以,现在我尝试使用像this.adultJsonArr[0].id_update_status = 'updated'之类的东西在相应的JS文件中更改id_update_status的值。所以,它不起作用。相反,如果我尝试更改任何其他属性,它就像this.adultJsonArr[0].id_update_status_check = 'Is it working?'一样有效。它基本上就像没有在第4行和第7行使用的json属性弹出窗口可以更新,但是一个正在使用的属性可以不用。

component.js

&#13;
&#13;
importToCrs(response,uploadResponse){
     let file_path = $(uploadResponse).find('Location').html().toString();
     if( this.get('choice')=="adult"){
         this.adultJsonArr[this.get('choiceId')].traveller_id_proof_link = file_path ;
         this.adultJsonArr[this.get('choiceId')].id_update_status = 'updating' ;
     }
}
&#13;
&#13;
&#13; 更新traveller_id_proof_link正在运行,但id_update_status无效。怎么处理?

1 个答案:

答案 0 :(得分:3)

你能告诉我你是如何初始化adultJsonArr的吗? 可能是因为数组内的内容可能不是ember对象。 它也应该用我认为的setter进行更新。

可以试试这个:

this.get('adultJsonArr').objectAt(this.get('choiceId')).set('traveller_id_proof_link', 'updated');