传递给REST Web服务时,AngularJS对象为null

时间:2014-02-17 22:57:25

标签: web-services angularjs rest

Angular新手,我没有运气到达这个底部。我正在尝试向我的RESTful Web服务发送更新调用。我正在传递和int和一个对象。在Web服务上调试时,int很好,但是对象总是为NULL。调用之前的调试显示对象具有值。为什么我在Web服务中为对象获取NULL?

我尝试过来自工厂以及保存功能。调用Web服务时,两者都为null。

app.js

TournamentDirectorApp.factory('tournamentFactory', function () {
    return {
        addUserToTournament: function (id, tourney, user, Tournament) {
            tourney.Users.push(user)
            var response = Tournament.update({ id: id }, { tourney: tourney })
            return tourney;
        }
    };
 });

$scope.save = function () {
    var updatedTournament = tournamentFactory.addUserToTournament(id, selectedTourney, $scope.selectedUser, Tournament);

    Tournament.update({ id: id }, { tournament: updatedTournament }, function () {
        $location.path('/')
    });

};

网络服务

    public HttpResponseMessage PutTournament(int id, Tournament tournament)
    {
        if (ModelState.IsValid && id == tournament.TournamentId)
        {
            db.Entry(tournament).State = EntityState.Modified;
            db.SaveChanges();
            return Request.CreateResponse(HttpStatusCode.OK);
        }
        else
        {
            return Request.CreateResponse(HttpStatusCode.BadRequest);
        }
    }

*锦标赛对象*

public class Tournament
{
    public int TournamentId { get; set; }
    public string Director { get; set; }
    public string Description { get; set; }
    public DateTime? StartDate { get; set; }
    public DateTime? EndDate { get; set; }

    public virtual List<Classification> Classifications { get; set; }

    public virtual List<User> Users { get; set; }
}

* app.js(更新路由)*

TournamentDirectorApp.factory('Tournament', function ($resource) {
return $resource('/api/tournament/:id', { id: '@id' }, {update: { method: 'PUT' }});

});

1 个答案:

答案 0 :(得分:0)

基于角度文档中的“更新”示例,我认为问题是您应该只发送带有更新请求的updatedTournament,而不是包装已更改对象的对象。尝试:

Tournament.update({ id: id }, updatedTournament, function () {
        $location.path('/') })
保存功能中的