Angular - 在$ update之后使用$ resource更新模型

时间:2013-09-02 22:19:43

标签: angularjs

当我从服务器收到回复时,我正试图弄清楚如何使用服务更新我的模型。

我的JSON结构:

var dgs = [{id    :1,
            driver:'Sam',
            type:  'bus',
            segments:[ {id:1,origin:'the bakery',arrival:'the store'},
                     {id:2,origin:'the store' ,arrival:'somewhere'}]
            },
            { ... },
            { ... }
          ];

的index.html:

<body ng-controller="dgCtrl">
  <div ng-repeat="dg in dgs" drivegroup></div>
</body>

dg.html:

<div> {{ dg.driver }} </div>
<div> {{ dg.type }} </div>
<div ng-repeat="seg in dg.segments" segments></div>

segments.html:

<div>
  <input ng-model="seg.origin" ng-blur="updateSegment()"/></div>
<div>
  <input ng-model="seg.arrival" ng-blur="updateSegment()"/></div>

我的控制器如下:

function dgCtrl($scope,$http,DriveGroup,Segment) {
  var segment =  new Segment;
  $scope.dgs = DriveGroup.query();  // load & display all drive groups

  $scope.updateSegment = function() {
    var seg = this.seg;
    segment.seg = this.seg;
    segment.id = this.seg.id;
    segment.$update(function(data,x) {
      // seg.origin = data.origin - This updates the origin.
      seg = data; // This doesn't work. How can I do this?
  });
}

我的服务:

angular.module('dgService',['ngResource']).
  factory("DriveGroup",function($resource) {
    return $resource(
      '/path/dgs',
      {},
      {update:{method:'PUT'}}
    );
});

angular.module('Segment',['ngResource']).
  factory('Segment',function($resource) {
    return $resource(
      '/path/seg/:id',
      {id:'@id'},
      {update:{method:'PUT'}}
    );
});

我的问题是我不确定如何使用$resource按段进行更新。我想对某个细分受众群进行更改,因此我发出了put个请求。我从服务器得到响应并希望更新我的模型(这不起作用)。

我是Angular的新手,所以如果你看到任何其他明显的错误/或结构问题,建议都会受到赞赏。感谢。

修改

以下是我想要的结果,但这是正确的吗?

$scope.updateSegment = function() {
  var seg = this.seg,
      segment = new Segment(seg);

  segment.$update(function(data,x) {
    angular.extend(seg,data);
  });
}

1 个答案:

答案 0 :(得分:0)

您是否已找到问题的解决方案?

我遇到了同样的问题,结果发现我的网络服务没有返回更新的数据。我修复了我的Web服务,$ update回调返回了所需的数据。