为什么只有在HTTP请求之后,此角度范围才会在视图中显示?

时间:2017-07-11 09:30:18

标签: angularjs datatable http-headers bootstrap-modal

我在代码中注意到一个奇怪的行为,我做了一个按钮,其中的操作是设置一个范围并显示一个带有此范围值的引导模态
通常代码应该如下所示

但是这不起作用我只在模型中得到一个空值

var table = $('#data').DataTable();
$('#data tbody').on('click', 'td.details-control,.addsta,.mjump,.mcon,.delwf', function () {    
    if (this.className == "btn btn-danger delwf") {
    var tr = $(this).closest('tr');
    var row = table.row(tr);
            $scope.sworcode = row.data().worcode;
            $scope.slancode = row.data().lancode;
            console.log(row.data().worcode);
            $('#modal-del').modal('show');
            };
}

但如果我添加这样的HTTP请求,则该值会显示在模态

var table = $('#data').DataTable();
 $('#data tbody').on('click', 'td.details-control,.addsta,.mjump,.mcon,.delwf', function () {   
        if (this.className == "btn btn-danger delwf") {

            var tr = $(this).closest('tr');
            var row = table.row(tr);

            $http({
                method: 'GET',
                url: localhost + "/test"
            }).then(function successCallback(response) {}, function errorCallback(response) {});
            $scope.sworcode = row.data().worcode;
            $scope.slancode = row.data().lancode;
            console.log(row.data().worcode);
            $('#modal-del').modal('show');

        };
 }

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

在代码中添加http请求时代码工作的原因是它会消除$ digest循环,这将更新范围变量的值。如果没有http,您可以使用@Html.TextBoxFor(m => m.Email, new { @id = "mail", @class = "form-control", placeholder = "Email" })

触发摘要循环
$scope.$apply()

了解更多信息How do I use $scope.$watch and $scope.$apply in AngularJS?