【问题标题】:AngularJS - Model not updating following async callAngularJS - 异步调用后模型不更新
【发布时间】:2016-02-29 18:29:36
【问题描述】:

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

我的 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 设置为一个(我通过将值输出到另一个控件来验证这一点)但是它不会自动选择 MR,直到我在另一个中更改模型值控制。

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

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

提前致谢。

卡尔

【问题讨论】:

    标签: javascript angularjs ajax asynchronous xmlhttprequest


    【解决方案1】:

    真的有点小学生的错误。

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

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

    这不会在 API 端造成问题,因为它会自动将字符串解析为整数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多