解决承诺角度2

时间:2017-06-14 13:46:17

标签: forms angular-promise angular2-forms

我有以下问题。

在函数中,我有一个承诺作为返回类型。此函数位于Hierarchy类中。

<body>
This game(s) belongs to you:
    <ul>
    {% for title in titles %}
        <li>{{title}}</li>
    {% endfor %}
    </ul>
</body>

此功能在类节点中。

updateNodeValues(entity: String, data: {}): Promise<any>{
    let jsonBody = JSON.stringify(data);
    let url = environment.endpointCore + '/api/' + entity + '/' + data['id'];

    return this.http.put(url, jsonBody, this.options)
      .toPromise()
      .then(response => {
        return response;
      })
      .catch(this.handleError);
  }

问题在于,当我尝试解决承诺并调用onSubmit(): void{ var currentForm = this.form.value; var entityName = this.inflection.classify(this.node.type).toLowerCase(); var requiredData = {}; for(var i = 0; i < this.formItems.length; i++){ this.formItems[i].value = currentForm[Object.keys(currentForm)[i]]; } for(var i=0; i<this.formItems.length; i++){ requiredData[this.globalService.camelize(this.formItems[i].label)] = this.formItems[i].value } Promise.resolve(this.hierarchyService.updateNodeValues(entityName, requiredData)).then(response => { alert(response.ok); if(response.ok){ this.globalService.showSuccessMessage('Values updated'); this.refreshGui(requiredData); } }); this.editMode = false; } 时,没有任何事情发生。我已经读过胖箭如何保留这个'上下文',我不明白为什么调用这个方法没有做任何事情,而调用this.refreshGui(requireddata)会产生预期的结果。

我正在调用的方法看起来像这样,它也在类节点中。

successMessage

1 个答案:

答案 0 :(得分:0)

我发现的解决方案是实现自定义事件。问题在于,在异步回调解析中, <script> $("#submit").click(function () { var data = $("#messagee").val(); //console.log(data); $('chat_log').append('<div class="row msg_container base_sent"><div class="col-md-10 col-xs-10"><div class="messages msg_receive"><p>' + .message + '</p></div></div></div>'); clearInput(); console.log($('.msg_container_base').innerHeight()) $('.msg_container_base').scrollTop($('.msg_container_base')[0].scrollHeight) }); // function clearInput() { // $("#myForm :input").each(function () { // $(this).val(''); //hide form values // }); // } // // $("#myForm").submit(function () { // return false; //to prevent redirection to save.php // }); </script> 将会“丢失”的上下文。胖箭头使我能够使用它来调用类方法,但是其中的属性将“丢失”。由于这个原因,我从方法中获取了逻辑,并将其放在回调部分中,并在某个变量中设置了预期和所需的结果。此变量已传递给我的自定义事件,并在自定义事件处理程序中适当地设置为类变量。