Javascript $rootScope事件和承诺之后的范围更新未反映在视图中
看到一些人有类似的问题,但通常的范围。$apply对我不起作用($digest已经在进行中)。今天撞了我的头 请在下面找到我的指令的简化但完整的版本Javascript $rootScope事件和承诺之后的范围更新未反映在视图中,javascript,angularjs,Javascript,Angularjs,看到一些人有类似的问题,但通常的范围。$apply对我不起作用($digest已经在进行中)。今天撞了我的头 请在下面找到我的指令的简化但完整的版本 initialize()将myValue设置为其初始值 $rootScope事件已捕获 承诺正在得到解决 $localStorage已更新 log(myValue)提供正确的值 但是我的视图没有更新。怎么回事 (函数(){ "严格使用",; 有棱角的 .module('myApp') .指令(“我的指令”,我的指令); 函数myDirective
(函数(){
"严格使用",;
有棱角的
.module('myApp')
.指令(“我的指令”,我的指令);
函数myDirective($rootScope、$localStorage、MyPromise、MyService){
var linkFunction=函数(范围、元素、属性){
scope.myValue=null;
$rootScope.$on('someEvent',函数(事件,数据){
MyPromise().get({},函数(结果){
$localStorage.result=result;
scope.myValue=MyService.getFromLocalStorageAndReturnStuff();
console.log(scope.myValue);
});
});
初始化();
函数初始化(){
scope.myValue=MyService.getFromLocalStorageAndReturnStuff();
}
};
返回{
限制:“A”,
是的,
替换:正确,
范围:{
someProperty:'=myProperty'
},
link:linkFunction,
templateUrl:'myTemplate.html'
};
}
})();代码>
{{myValue}
链接函数不监视模型更改,因此在applyAsync函数中设置变量
scope.$applyAsync(function(){
//set here
});
我的工作原理是,我有一个外部作用域属性(scope.someProperty),当我的事件发生时,它也在变化
观察它确实会改变视图中反映的范围
我知道,如果一个人真的必须对某个事件做出反应,这不是一个完美的解决方案,但我想提供我的解决方案,以防它可能对其他人有所帮助
如果有人能回答真正的问题,我很乐意接受他的回答
(函数(){
"严格使用",;
有棱角的
.module('myApp')
.指令(“我的指令”,我的指令);
函数myDirective($rootScope、$localStorage、MyPromise、MyService){
var linkFunction=函数(范围、元素、属性){
scope.myValue=null;
范围.$watch('someProperty',函数(newVal){
如果(newVal!==null){
MyPromise().get({},函数(结果){
$localStorage.result=result;
scope.myValue=MyService.getFromLocalStorageAndReturnStuff();
});
}
});
初始化();
函数初始化(){
}
};
返回{
限制:“A”,
是的,
替换:正确,
范围:{
someProperty:'=myProperty'
},
link:linkFunction,
templateUrl:'myTemplate.html'
};
}
})();代码>尝试清除缓存尝试调用“scope.myValue=MyService.getFromLocalStorageAndReturnStuff();”在$applyAsync中。无效,既不是异常也不是视图更改。请尝试调用作用域。$apply在设置后,删除ApplySync,还尝试不隔离作用域谢谢,但请参阅我的评论,我已经尝试了作用域。$apply-但我已经在摘要循环中。使用控制器作用域,尝试不隔离作用域