Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $rootScope事件和承诺之后的范围更新未反映在视图中_Javascript_Angularjs - Fatal编程技术网

Javascript $rootScope事件和承诺之后的范围更新未反映在视图中

Javascript $rootScope事件和承诺之后的范围更新未反映在视图中,javascript,angularjs,Javascript,Angularjs,看到一些人有类似的问题,但通常的范围。$apply对我不起作用($digest已经在进行中)。今天撞了我的头 请在下面找到我的指令的简化但完整的版本 initialize()将myValue设置为其初始值 $rootScope事件已捕获 承诺正在得到解决 $localStorage已更新 log(myValue)提供正确的值 但是我的视图没有更新。怎么回事 (函数(){ "严格使用",; 有棱角的 .module('myApp') .指令(“我的指令”,我的指令); 函数myDirective

看到一些人有类似的问题,但通常的范围。$apply对我不起作用($digest已经在进行中)。今天撞了我的头

请在下面找到我的指令的简化但完整的版本

  • initialize()将myValue设置为其初始值
  • $rootScope事件已捕获
  • 承诺正在得到解决
  • $localStorage已更新
  • log(myValue)提供正确的值
  • 但是我的视图没有更新。怎么回事

    (函数(){
    "严格使用",;
    有棱角的
    .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-但我已经在摘要循环中。使用控制器作用域,尝试不隔离作用域