繁体   English   中英

如何在(异步)Angular / Javascript中指定执行顺序

[英]How to specify execution order in (asynchronous) Angular/Javascript

我有一个自定义指令(这只是一个简化的示例)。 单击指令后,将更新变量并执行函数。 变量和函数均来自父范围,分别通过双向绑定和方法/行为绑定访问。

在某些情况下,父作用域可能会否决该指令,并迫使变量与该指令设置的值不同。

我的问题是在变量更新之前调用了该函数,这可能是因为异步行为。 这意味着该变量将被指令覆盖。

有什么方法可以在变量更新后强制调用该函数?

这来自指令的链接函数:

element.bind('click', function(){
    scope.val = 'someValue'; // This should alway be executed first
    scope.directiveClicked(); // This should always be executed last
});

变量和方法的访问方式如下:

scope: {
    val: '=value',
    directiveClicked: '&onDirectiveClick'
}

事实证明,它毕竟不是按错误的顺序调用的,但是以某种方式未显示/存储更新的值。 在通知父函数之前添加一个scope。$ apply()可以解决问题。

element.bind('click', function(){
    scope.val = 'someValue'; 
    scope.$apply();
    scope.directiveClicked(); 
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM