加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 保存时项目消失

发布时间:2020-12-17 10:26:09 所属栏目:安全 来源:网络整理
导读:我创建了一个显示数据的指令.我可以将它包含在ng-repeat中,并看到模型已连接.当我单击并返回页面时,数据将再次显示以前进行的更改.我使用ngResources从API加载数据.到目前为止,这么好:它按预期工作. 这是破坏的部分:如果我在我的指令中将数据保存到API,则
我创建了一个显示数据的指令.我可以将它包含在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’}.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读