我尝试了各种各样的方法,但对我来说没有任何作用。我有什么:
app.controller('someCtrl',
...
$scope.load = function () {
client.loadAgreements().
then(function (response) {
$scope.unapprovedCount = response.data[StatusTypeEnum.Unapproved];
$scope.approvedCount = response.data[StatusTypeEnum.Approved];
$scope.$apply();
});
};
Html部分:
<button text="'({{unapprovedCount}})'" ...
<button text="'({{approvedCount}})'"...
当我这样做时:
app.controller('someCtrl',
...
$scope.unapprovedCount = 777;
$scope.load = function () {
client.loadAgreements().
then(function (response) {
$scope.unapprovedCount = response.data[StatusTypeEnum.Unapproved];
$scope.approvedCount = response.data[StatusTypeEnum.Approved];
$scope.$apply();
});
};
页面渲染时我可以看到777。但是,我没有看到承诺的任何更新。已分配变量但未更新视图。如果我添加apply方法,那么我会收到错误:
错误:[$ rootScope:inprog] $ digest已在进行中
我还能尝试什么,因为我是棱角分明但不知道如何做到这一点?
编辑:
我不确定这是否重要,但实际上这个按钮使用指令:
<button ng-fas-button-with-color-indicator text"'Approved ({{unapprovedCount}})'" color="red" ...
text
在某个div中呈现。
答案 0 :(得分:1)
删除
$scope.$apply();
从您的代码并在您的控制台中检查
的值response.data[StatusTypeEnum.Unapproved]
答案 1 :(得分:0)
为什么需要$scope.$apply()
?
您必须将其从代码中删除。
此功能的唯一需要是当您使用第三方lib来操作范围内的变量时,在angular的观察之外。
当你使用apply并且摘要周期没问题,没有任何改变时,会引发错误。