无法立即销毁使用 Foundation for Apps 创建的模态元素
Cannot immediately destroy modal elements created with Foundation for Apps
我正在使用 Foundation for Apps 附带的 ModalFactory 以编程方式创建模式,效果很好,但我的用例要求我在每次调用时强制重绘模式。但是,在尝试销毁模态时,我发现 ModalFactory.destroy 的源代码在销毁似乎导致各种问题的元素之前包含 3 秒超时。
我想知道是否有立即销毁元素的解决方法。
// ModalFactory.destroy source:
function destroy() {
self.deactivate();
setTimeout(function() {
scope.$destroy();
element.remove();
destroyed = true;
}, 3000);
foundationApi.unsubscribe(id);
}
当您使用 setTimeout
函数时,它是 JavaScript 原生函数,通过 运行ning,您的 digest
循环将不会触发摘要循环。如果您更改了任何 scope
级别对象,结果将无法绑定。为避免此类问题,angular 提供了 $timeout
服务,其工作方式与 setTimeout
相同,仅在回调时间完成后执行 运行 摘要周期。
// ModalFactory.destroy source:
function destroy() {
self.deactivate();
$timeout(function() {
scope.$destroy();
element.remove();
destroyed = true;
}, 3000);
foundationApi.unsubscribe(id);
}
我正在使用 Foundation for Apps 附带的 ModalFactory 以编程方式创建模式,效果很好,但我的用例要求我在每次调用时强制重绘模式。但是,在尝试销毁模态时,我发现 ModalFactory.destroy 的源代码在销毁似乎导致各种问题的元素之前包含 3 秒超时。
我想知道是否有立即销毁元素的解决方法。
// ModalFactory.destroy source:
function destroy() {
self.deactivate();
setTimeout(function() {
scope.$destroy();
element.remove();
destroyed = true;
}, 3000);
foundationApi.unsubscribe(id);
}
当您使用 setTimeout
函数时,它是 JavaScript 原生函数,通过 运行ning,您的 digest
循环将不会触发摘要循环。如果您更改了任何 scope
级别对象,结果将无法绑定。为避免此类问题,angular 提供了 $timeout
服务,其工作方式与 setTimeout
相同,仅在回调时间完成后执行 运行 摘要周期。
// ModalFactory.destroy source:
function destroy() {
self.deactivate();
$timeout(function() {
scope.$destroy();
element.remove();
destroyed = true;
}, 3000);
foundationApi.unsubscribe(id);
}