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

时间:2016-02-26 10:20:07

标签: javascript angularjs ajax asynchronous xmlhttprequest

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

我的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手动更新范围,以查看它是否有效但无效。

提前致谢。

卡尔

1 个答案:

答案 0 :(得分:0)

真正的学校男孩错误。

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

要解决此问题,我只需将查找ID转换为范围内的字符串值。

这不会导致API端出现问题,因为它会自动将字符串解析为整数。