AngularJS选择值在调用Restful Service和Scope Object Update后丢失

时间:2014-03-27 13:32:46

标签: javascript asp.net angularjs asp.net-web-api

我有一个使用ASP.net Web API后端的angularjs前端。我在选择列表中使用以下代码:

<select id="package" class="form-control" ng-options="package as package.Name for package in request.PackageServices.Packages" ng-model="request.Package">
    <option value="">No Package</option>
</select>

选择列表正确填充并按预期输出包。

选择更改后,request.Package项会使用所选包正确更新。

将请求对象发布到Web API restful服务后,它正确包含正确的包。

当web api将restful响应发送回客户端时,请求对象包含正确的包。

问题在于,在调用API服务并且API服务响应发回新请求对象之后,选择列表将丢失正确的选定值。

以下是saveRequest方法的样子:

$scope.saveRequest = function (request) {

        console.log(request);

        //the request.Package contains the correct Package here!    

        applicantLinkData.create(request)
        .$promise.then(
            function (resp) {
                $scope.request = resp.Request;
                console.log(resp.Request);
                // the resp.Request.Package contains the right package here!
            },
            function (resp) {
                //failure... do something
            }
        );
   };

我不知道如何修复它,但基本上在调用saveRequest方法之后,html中的选择列表会重置为&#34; No Package&#34;而不是保留正确选择的包。

1 个答案:

答案 0 :(得分:2)

您有两个选择:

  • 请勿替换整个请求,导致角色无法跟踪对象引用。您需要逐个字段复制。
  • 为您的软件包分配ID,并在ng-options中使用跟踪ID ,而不是按对象引用进行跟踪。 ng-options="package as package.Name for package in request.PackageServices.Packages track by package.Id"