因此,当用户执行这3个事件中的任何一个时,我想更新MongoDB中的某些内容。我在这里搜索了堆栈溢出并获得了一些信息,告诉我使用$ stateChangeStart。所以,在我的app.config结束后,我写了以下几行:
.run(['$state', '$cookies', '$rootScope', function($state, $cookies, $rootScope) {
$rootScope.$on('$stateChangeStart', function(e, toState, toParams, fromState, fromParams) {
console.log('e', e);
console.log('toState', toState);
console.log('toParams', toParams);
console.log('fromState', fromState);
console.log('fromParams', fromParams);
});
}]);
问题是,浏览器最多只能访问$ rootScope。$ on。之后,console.log行不会被执行。如果有人能告诉我如何解决这个问题,我真的很感激。在此之后,我正在考虑以下列方式解决我在DB中更改内容的问题:
1 - 我会在状态中添加一些属性,如stateNumber或其他。
2 - 然后使用该属性,if(toState.stateNumber == 1)
3 - 然后根据toState.stateNumber为1或2或其他什么,我将更新数据库
对如何解决这些问题表示赞赏。
答案 0 :(得分:0)
以下是我在申请中的表现:
$rootScope.$on('$locationChangeSuccess', function() {
$rootScope.actualLocation = $location.path();
});
$rootScope.$watch(function () {return $location.path()}, function (newLocation, oldLocation) {
if($rootScope.actualLocation === newLocation) {
//post to mongo
}
});