AngularJS 组件:$doCheck 不会 运行 使用 $q.when() 伪造 HTTP 请求

AngularJS component: $doCheck won't run for fake HTTP request with $q.when()

我创建了 Simple Angular textarea component with characters counter, made with $doCheck component hook on Plunker, which counts characters on $doCheck hook. I read that it should run for every digest cycle,所以它应该可以工作:

$ctrl.load = function () {
    HTTPService
      .get()
      .then(_bindElement);
  }
function _bindElement (element) {
    $ctrl.element = element;
  }

因为至少 digets 运行 - 组件内部的值发生变化,它也显示在父 <p> 上。但是计数器没有改变,我是不是漏掉了什么,$doCheck 在每个摘要周期都运行是不正确的?我使用 $q.when() 来模拟 HTTP 请求 - 我也尝试过 $timeout 来强制摘要,但它没有用。提前感谢您的帮助。

我找到了一个解决方案,当字符数发生变化时,我必须用 timeout 手动调用 digest,因为它看起来像 $doCheck 中的赋值不会触发 digest ,这就是视图与模型不同步的原因。工作内容:https://plnkr.co/edit/M6I5sB?p=info.