角度变量不在前端更新

时间:2017-07-03 15:24:42

标签: javascript jquery angularjs

我在angularjs中有一个应用程序,它运行时没有错误,但是只有一个特定的变量传递给前端而没有更新。我已在控制器中声明,填充并启动它,但它仍处于零位:

(function () {
 "use strict";
 angular.module("HtJobPortal").controller("JobController", JobController);

    JobController.$inject = ["$scope", "$rootScope"];

    function JobController($scope, $rootScope){      
        var job = this;
        job.global = $rootScope;
        job.pendingCount = 0;
        job.penStr = "http://...";

        job.getPending = function () {
            $.ajax({
                method: "GET",
                crossDomain: true,
                url: job.penStr,
                dataType: "json",
                success: function (data) {
                    job.fillPending(data);
                    job.pendingCount = data.Data.length;
                }
            });
        }

        // Initialise pending and set roles
        job.init = function () {
            job.getPending();
        }
    };
    job.init();
    }
})();

应用程序的其余部分按预期工作,job.fillPending(data);无错误地工作,并创建它应该的表。我在job.pendingCount = data.Data.length;上设置了一个断点,它告诉我长度为1,但这一点从未反映在待处理的计数中,该计数保持为零。

HTML输出是:

<h3>Showing {{job.pendingCount}} Pending Bookings</h3>

如果控制器启动时的初始创建变量发生更改,则会发生这种情况。 (编辑:'作业'进行计数的原因,是因为控制器在附加到模板时有别名<main class="main" ng-controller="JobController as job">

1 个答案:

答案 0 :(得分:1)

事件处理程序被称为“外部”Angular,因此即使您的$ scope属性将被更改,视图部分也不会更新,因为Angular不知道这些更改。

在事件处理程序之后调用$ scope。$ apply()。这将导致运行摘要周期,Angular会注意到您对$ scope所做的更改并更新视图。