AngularJS - 模型在异步调用后未更新

AngularJS - Model not updating following async call

本文关键字:更新 调用 异步 模型 AngularJS      更新时间:2023-09-26

我想知道是否有人可以帮助我?我对角度仍然很陌生,并且有一个问题,即我的选择控件最初没有选择正确的值,而是更新后续更改。

我的HTML如下:

<select class="form-control" ng-model="job.SalutationId" ng-init="job.SalutationId=0">
    <option value="0">Salutation</option>
    <option ng-repeat="salutation in lookups.salutations" value="{{salutation.Id}}">{{salutation.Name}}</option>
</select>

我正在通过 WebApi 加载一个对象,该对象目前表示作业和查找值 - 这目前不在服务中,因为它目前的所有测试,但 js 看起来像:

function loadJob() {
    $http({ method: 'GET', url: url + 'jobs/2' }).
        then(function (response) {
            $scope.lookups.salutations = response.data.Salutations;
            $scope.job = response.data.Job;  
        }, function (response) {
            displayJobErrorMessage(response.data || "Request failed");
        });
}
HTML 控件填充了查找中的值

job.SalutationId设置为 1(我通过将值输出到另一个控件来验证这一点),但是在我更改另一个控件中的模型值之前,它不会自动选择 MR。

我想发生的是它会自动选择 MR,因为这是作业本身的值。

谁能发现我哪里出错了?我还尝试使用$scope.$apply手动更新范围,以查看它是否有影响,但无济于事。

提前谢谢。

卡尔

真的有点小学生的错误。

AngularJS在javascript中使用===运算符来检查值和类型,并且由于选择控件是基于字符串的,它不喜欢我的范围使用整数值。

为了解决这个问题,我只需将查找 ID 转换为作用域上的字符串值即可。

这应该不会在 API 端引起问题,因为它会自动将字符串解析为整数。