我在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">
)
答案 0 :(得分:1)
事件处理程序被称为“外部”Angular,因此即使您的$ scope属性将被更改,视图部分也不会更新,因为Angular不知道这些更改。
在事件处理程序之后调用$ scope。$ apply()。这将导致运行摘要周期,Angular会注意到您对$ scope所做的更改并更新视图。