欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

AngularJS中update两次出现$promise属性无法识别的解决方法

程序员文章站 2022-05-24 15:44:17
前言 本文主要介绍的是在angularjs中update两次出现$promise属性无法识别的解决方法,下面话不多说,先来看看错误提示,然后再看看解决的办法吧。 一、错...

前言

本文主要介绍的是在angularjs中update两次出现$promise属性无法识别的解决方法,下面话不多说,先来看看错误提示,然后再看看解决的办法吧。

一、错误信息如下:

error 2015-12-02 14:33:17,653 http-bio-8080-exec-42 o.s.s.r.i.e.internalerrorexceptionmapper - unrecognized field "$promise" (class com.inetpsa.fnd.rest.client.clientrepresentation), not marked as ignorable (6 known properties: "lastname", "address", "telephone", "clientid", "mail", "firstname"]) 
 at [source: org.apache.catalina.connector.coyoteinputstream@1b9d797d; line: 1, column: 357] (through reference chain: com.inetpsa.fnd.rest.client.clientrepresentation["$promise"]) 
com.fasterxml.jackson.databind.exc.unrecognizedpropertyexception: unrecognized field "$promise" (class com.inetpsa.fnd.rest.client.clientrepresentation), not marked as ignorable (6 known properties: "lastname", "address", "telephone", "clientid", "mail", "firstname"]) 
 at [source: org.apache.catalina.connector.coyoteinputstream@1b9d797d; line: 1, column: 357] (through reference chain: com.inetpsa.fnd.rest.client.clientrepresentation["$promise"]) 
 at com.fasterxml.jackson.databind.exc.unrecognizedpropertyexception.from(unrecognizedpropertyexception.java:51) ~[jackson-databind-2.4.4.jar:2.4.4] 
 at com.fasterxml.jackson.databind.deserializationcontext.reportunknownproperty(deserializationcontext.java:744) ~[jackson-databind-2.4.4.jar:2.4.4] 
 at com.fasterxml.jackson.databind.deser.std.stddeserializer.handleunknownproperty(stddeserializer.java:915) ~[jackson-databind-2.4.4.jar:2.4.4] 
 at com.fasterxml.jackson.databind.deser.beandeserializerbase.handleunknownproperty(beandeserializerbase.java:1306) ~[jackson-databind-2.4.4.jar:2.4.4] 
 at com.fasterxml.jackson.databind.deser.beandeserializerbase.handleunknownvanilla(beandeserializerbase.java:1284) ~[jackson-databind-2.4.4.jar:2.4.4] 
 at com.fasterxml.jackson.databind.deser.beandeserializer.vanilladeserialize(beandeserializer.java:243) ~[jackson-databind-2.4.4.jar:2.4.4] 
 at com.fasterxml.jackson.databind.deser.beandeserializer.deserialize(beandeserializer.java:118) ~[jackson-databind-2.4.4.jar:2.4.4] 

二、问题代码

AngularJS中update两次出现$promise属性无法识别的解决方法

angular 自动会在返回的data数据中带上$promise属性。

AngularJS中update两次出现$promise属性无法识别的解决方法

在进行下面copy时将从data返回的数据copy到当前行用来显示,这样在进行update的操作时带的数据体中就包含了$promise属性,结果就会出现上述错误导致update失败。  

AngularJS中update两次出现$promise属性无法识别的解决方法

三、更改如下:

// ===============show the update modal dialog ================== 
 $scope.temprowentityforupdate; 
 $scope.openupdateclientpopup=function(){ 
 $scope.form1.$setsubmitted(true); 
 $scope.temprowentityforupdate = {}; 
 angular.copy($scope.currentselectedrowentity, $scope.temprowentityforupdate); 
 angular.element('#updatedialog').modal({ 
 backdrop: false 
 }); 
 
 }; 
 
 $scope.updateclient=function(){ 
 if($scope.form1.$submitted && $scope.form1.$valid){ 
 client.update({},$scope.temprowentityforupdate,function(){ 
  angular.copy($scope.temprowentityforupdate,$scope.currentselectedrowentity); 
 }); 
 
 angular.element('#updatedialog').modal('hide'); 
 } 
 }; 

解决办法:不使用更新后获得的data数据,而是从当前的行模型中取得数据copy给当前选中的行即可。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。