Javascript 使用服务angularjs时的奇怪行为
在这里,您可以在angular material中找到一些用于sidenav的服务: $mdSidenav 我用的是这个: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 () {
// 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
。它将是未定义的
,这可能会导致问题。请参阅我的编辑,我的代码有误。这是正确的版本