在Angular 1.x控制器中有这样的结构是否正确,另一个$ timeout中包含$ timeout?
$timeout(function () {
$timeout(function () {
callbackFn($event);
});
});
更具体一点:
我在指令链接函数中超时,在指令控制器中有另一个超时。现在,每次呈现指令时,它们都以随机顺序执行。我找到了两个嵌套超时的解决方案,但是我不确定是否可以这样使用它们。
答案 0 :(得分:2)
要处理请求两个或更多函数(在您的情况下,在指令和控制器 [第一个指令,然后是控制器] 之间),您可以在它们之间传递Model。
更多解释
在应用程序中使用模型是强大的策略之一,可以让您的应用变得灵活。
例如
$scope.model = { anything: false }
如果我们尝试在我们的指令中传递此$scope
,那么我们在控制器和指令之间有两种方式绑定,我将向您展示它在样本中的工作方式。
<强> app.js 强>
var app = angular.module('app', []);
app.directive('cDir', function($timeout){
return {
restrinct: 'E',
controller: 'appCtrl',
template: 'cdir template',
scope: {
ready: '='
},
link: function(scope){
console.log('t1');
scope.ready = true;
}
}})
app.controller('appCtrl', ['$scope', function($scope) {
$scope.ready = false;
$scope.$watch('ready', function(isReady){
if(isReady){
console.log('t2');
}
})
}]);
查看强>
<div ng-app="app">
<c-dir ready="ready"></c-dir>
</div>
我们将$scope.ready
定义为指令的模型,console.log('t2')
在指令ready
为true
时显示;我们使用$watch
作为$scope
的收听者。