在我的角度应用程序中,我有一个具有隔离范围的指令。该指令在其作用域中获取一个字符串参数,并且由于该值可能由父作用域在异步过程中初始化 - 它还获得一个由父作用域在值准备好使用时解析的承诺。
奇怪的事情:当承诺被解决时,指令范围内的值仍然是未定义的,尽管在父控制器中它有一个值。
请参阅此 plunker,了解我的体验示例: https ://plnkr.co/edit/WLILKaO95xWwU2RF29oX?p=preview
在控制器中:
$scope.defer = $q.defer();
// to simulate an async operation
$timeout(function(){
$scope.ctrlValue = 'Hi';
$scope.defer.resolve();
});
在指令中:
scope.valuePromise.then(function(){
alert(scope.value);
});
重要说明:如果我将“alert”代码行包装在 $timeout 块中 - scope.value 具有正确的值。解决承诺后,似乎 Angular 没有运行摘要。
有任何想法吗?