指令的代码
.directive('directive',function(){
return {
link:function(scope){
scope.a1='ok'
scope.b1='ok'
scope.c1='ok'
}
}
})
控制器代码:
.controller('controller',function($scope,$timeout){
$scope.a=$scope.a1
$timeout(function(){
$scope.b=$scope.b1
},100)
})
结果:
the scope.a1 ="" but needs to be 'ok'
the scope.b = "ok" but needs to be 'ok'
the scope.c1 = "ok" but needs to be 'ok'
演示:http://plnkr.co/edit/80XojfqrrKNubi17TeHq?p=preview
我希望a是ok的。但是当我声明它($scope.a==$scope.a1)时,指令链接函数还没有运行。我该怎么办?
您可以使用释放美元()和美元在()。
- $emit()通过作用域层次向上调度事件。
- $on()监听特定事件
那么在你的情况下,你可以这样做:
控制器
(function(){
function Controller($scope) {
//Listen for change event sent by the directive
$scope.$on('change', function(){
//Set our $scope value
$scope.a = $scope.a1;
$scope.b = $scope.b1;
})
}
angular
.module('app', [])
.controller('ctrl', Controller);
})();
指令
(function(){
function directive() {
return {
link:function(scope){
scope.a1='ok';
scope.b1='ok';
scope.c1='ok';
//Send change event
scope.$emit('change');
}
};
}
angular
.module('app')
.directive('directive', directive);
})();