Javascript 使用服务angularjs时的奇怪行为

Javascript 使用服务angularjs时的奇怪行为,javascript,angularjs,angular-material,angular-services,Javascript,Angularjs,Angular Material,Angular Services,在这里,您可以在angular material中找到一些用于sidenav的服务: $mdSidenav 我用的是这个: // Async close the given sidenav $mdSidenav(componentId) .close() .then(function(){ $log.debug('closed'); }); 我只是以这种方式将其包含在函数中: $scope.closeNavDrawer = function () {

在这里,您可以在angular material中找到一些用于sidenav的服务:

$mdSidenav

我用的是这个:

// Async close the given sidenav
$mdSidenav(componentId)
   .close()
   .then(function(){
     $log.debug('closed');
   });
我只是以这种方式将其包含在函数中:

$scope.closeNavDrawer = function () {
            $mdSidenav('versionNav')
                .close()
                .then(function () {
                   $scope.myFunction();
                });
        };
因此,我可以在html视图中调用
closeNavDrawer()
,以关闭导航。它起作用了。当我点击按钮关闭时,它启动
$scope.myFunction()正确。这种奇怪的行为是因为如果我在http get请求之后调用
closeNavDrawer()
,它会关闭nav,但函数不会启动

$http({
  method: 'GET',
  url: '/someUrl'
}).then(function successCallback(response) {
   $scope.closeNavDrawer(); // it close the nav but not starts $scope.myFunction();
  }, function errorCallback(response) {
  });

这种不同的行为怎么可能发生?

我假设没有抛出JS错误?您是否尝试将错误块添加到
.close().then()
?可能是由于某种原因,它抛出了一个错误,而您却在默默地忽略它。如果你能在小提琴/弹琴中重新创作,我们可以帮助你。没有错误。这很奇怪,它忽略了函数。但前提是我从javascript调用$scope.closeNavDrawer()函数。这是非常奇怪的
closeNavDrawer
,什么是
$mdSidenav('mySidenav')。isOpen()==false
返回。它是否试图引用名为
$scope.isClosed的变量?如果是这样,我不希望它找到它,因为您用大写字母“L”将其命名为
$scope.isCLosed
。它将是未定义的
,这可能会导致问题。请参阅我的编辑,我的代码有误。这是正确的版本我假设没有抛出JS错误?您是否尝试将错误块添加到
.close().then()
?可能是由于某种原因,它抛出了一个错误,而您却在默默地忽略它。如果你能在小提琴/弹琴中重新创作,我们可以帮助你。没有错误。这很奇怪,它忽略了函数。但前提是我从javascript调用$scope.closeNavDrawer()函数。这是非常奇怪的
closeNavDrawer
,什么是
$mdSidenav('mySidenav')。isOpen()==false
返回。它是否试图引用名为
$scope.isClosed的变量?如果是这样,我不希望它找到它,因为您用大写字母“L”将其命名为
$scope.isCLosed
。它将是未定义的
,这可能会导致问题。请参阅我的编辑,我的代码有误。这是正确的版本