[英]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.