我有一个自定义指令(这只是一个简化的例子)。单击该指令时,将更新变量并执行函数。变量和函数都来自父作用域,分别通过双向绑定和方法/行为绑定访问。
在某些情况下,父作用域可能会否决该指令并强制该变量与指令设置的值不同。
我的问题是在更新变量之前调用函数,可能是因为异步行为。这意味着变量会被指令覆盖。
是否有某种方法可以在更新变量后强制调用函数?
这是来自指令的链接功能:
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'
}
答案 0 :(得分:0)
事实证明它毕竟没有以错误的顺序调用,但不知何故更新的值没有显示/存储。在通知父函数之前添加范围。$ apply()就可以了。
element.bind('click', function(){
scope.val = 'someValue';
scope.$apply();
scope.directiveClicked();
});