当我从服务器收到回复时,我正试图弄清楚如何使用服务更新我的模型。
我的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);
});
}
答案 0 :(得分:0)
您是否已找到问题的解决方案?
我遇到了同样的问题,结果发现我的网络服务没有返回更新的数据。我修复了我的Web服务,$ update回调返回了所需的数据。