如何在(异步)Angular / Javascript

时间:2015-08-07 08:14:11

标签: javascript angularjs asynchronous

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

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

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

是否有某种方法可以在更新变量后强制调用函数?

这是来自指令的链接功能:

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'
}

1 个答案:

答案 0 :(得分:0)

事实证明它毕竟没有以错误的顺序调用,但不知何故更新的值没有显示/存储。在通知父函数之前添加范围。$ apply()就可以了。

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