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.
我创建了 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.