Javascript 数据提取前执行的角度指令
我现在有一个关于指令的问题,而当指令试图访问它们时,在父控制器中设置的一些范围值没有设置。这是因为在AJAX调用返回任何数据之前调用了该指令。是否有任何方法使我的指令在继续之前等待设置此数据Javascript 数据提取前执行的角度指令,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我现在有一个关于指令的问题,而当指令试图访问它们时,在父控制器中设置的一些范围值没有设置。这是因为在AJAX调用返回任何数据之前调用了该指令。是否有任何方法使我的指令在继续之前等待设置此数据 angular.module('vt.directives', []) .directive('personType', [function () { return { restrict: 'A', replace: true, scope:
angular.module('vt.directives', [])
.directive('personType', [function () {
return {
restrict: 'A',
replace: true,
scope: {
data: '='
},
template: '<div class="{{data.property}}"</div>',
link: function (scope, elm, attrs) {
console.log(scope.personType);
}
};
}]);
<div ng-controller="parentcontroller">
<div personType data="jsonobject"></div>
</div>
角度模块('vt.directives',[])
.directive('personType',[function(){
返回{
限制:“A”,
替换:正确,
范围:{
数据:'='
},
模板:'如果希望数据位于作用域personType,则必须将数据分配给personType指令本身
<div personType="jsonobject"></div>
如果您想在AJAX调用之后加载这些数据,那么您可以$emit从您的服务中发送数据,并通过$on方法在指令中访问它
在您的情况下可能会有所帮助:)如果不等待会有什么危害?我认为数据在
范围内可用。数据在范围内不可用。personType在您的指令链接函数中。当您执行范围时:{data:'='}
在该指令中,您正在设置双向绑定,因此正如第一条注释所述,如果不等待,则不会有任何伤害,b/c检索数据时,绑定应再次更新。您的console.log语句将只运行一次(即使使用了正确的变量名,它也不会打印服务器响应)。您是否向我们展示了使用该指令的所有模板?如果有更多模板,您可能正在创建可能导致此类问题的子作用域。此外,您应该使用人员类型
从HTML中调用您的指令。请在指令中使用$watch。
console.log( $parse(attrs.personType)(scope));