我有一个使用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静态服务后,它正确包含正确的包。

当Web API将宁静的响应发送回客户端时,请求对象将包含正确的包。

问题在于,在对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中的选择列表后,将其重置为“无软件包”,而不是保留正确选择的软件包。

最佳答案

您有2个选择:


不要替换整个请求,从而导致angular失去对对象参考的跟踪。您需要逐字段复制。
为您的包裹分配一个ID,并使用ng-options中的按ID跟踪,而不是按对象引用跟踪。 ng-options="package as package.Name for package in request.PackageServices.Packages track by package.Id"

关于javascript - 调用静态服务和范围对象更新后,AngularJS选择值丢失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22689230/

10-09 23:32
查看更多