angularjs – 保存时项目消失
我创建了一个显示数据的指令.我可以将它包含在ng-repeat中,并看到模型已连接.当我单击并返回页面时,数据将再次显示以前进行的更改.我使用ngResources从API加载数据.到目前为止,这么好:它按预期工作.
这是破坏的部分:如果我在我的指令中将数据保存到API,则该项目将从页面中消失(更具体地说,它的字段为空白).其余的项目仍然像以前一样.只有保存的更改. 这是指令: .directive('action',function() { return { restrict: 'E',scope: { data:'=model' },templateUrl: 'modules/actions/view.tpl.html',replace: true,link: function(scope,element,attr) { scope.save = function() { console.log(" data to save:" + JSON.stringify(scope.data)); scope.data.$save(); } } }; }) 与该指令关联的html包括: <p><input type="text" ng-model="data.assignee" ng-change="save()"> 这是指令的使用方式: <div ng-repeat="item in data"> <action model="item" /> </div> 这是一个显示其他背景的fiddle.您可以看到基本指令使用一些虚假数据. API调用的代码已注释掉. 同样,当scope.data.$save();行未被注释.当ng-repeat中显示的项目尝试保存时,它将从显示的项目列表中消失,替换为带有空白字段的项目.当我重新加载整个应用程序时,我看到API保存成功,现在项目正确显示. 我怀疑发生的事情是保存调用对正确的项目进行操作,但不知何故用一个新的空白替换更改的项目,可能是由于原型继承.然后保存会导致更新父作用域,该作用域重新绘制列表并显示新的消隐项. 有人可以澄清发生了什么以及如何解决它?
我认为您将发现对$save()命令的HTTP响应返回空数据.
这就是$资源的运作方式.当你调用$save()时,它将(默认情况下)使用HTTP POST调用你的REST服务.响应应该是资源的服务器状态.然后将结果复制到您的对象.在这种情况下,我猜你的REST服务正在返回一个空对象. 换句话说,如果你发送一个{body:’foo’}正文的POST,你希望服务器的响应类似{id:44,name:’foo’,extraInfoServerCreated:’bar’}. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |