AngularJS UI 路由器 - 使用 templateUrl 时 $state.current.name 为空
AngularJS UI Router - $state.current.name is empty when using templateUrl
我正在为 Angular 使用 ui 路由器并尝试获取当前状态的名称。
折腾了3天,发现用templateUrl的时候是空的。
将其更改为模板后:'test',状态名称神奇地出现了...
有可能实现吗?
Here is the demo
Code on above link
这里需要一个$watch,因为它都是异步的,我们不能依赖计时:
myApp.controller('navCtrl', ['$state', '$scope','$timeout', function($state, $scope, $timeout){
$scope.currState = $state;
console.log("This one have some objects: ");
console.log('by reference:', $scope.currState);
console.log('by value:', JSON.parse(JSON.stringify($scope.currState)));
// console.log("But when I want to access name its empty: ");
// $timeout(function() {
// console.log($state.current.name);
// });
// use this instead:
$scope.$watch('currState.current.name', function(newValue, oldValue) {
console.log(newValue);
});
}]);
console.log('by reference:', $scope.currState);
确实有效,因为它使用了对对象的引用。当我们在控制台中看到它时,对象已经更改。
与上面console.log('by value:', JSON.parse(JSON.stringify($scope.currState)));
的输出比较,它在执行时冻结了输出。你会发现一个空的 $state.current.name
.
另见:How can I change the default behavior of console.log? (*Error console in safari, no add-on*)
我正在为 Angular 使用 ui 路由器并尝试获取当前状态的名称。
折腾了3天,发现用templateUrl的时候是空的。 将其更改为模板后:'test',状态名称神奇地出现了...
有可能实现吗? Here is the demo
Code on above link
这里需要一个$watch,因为它都是异步的,我们不能依赖计时:
myApp.controller('navCtrl', ['$state', '$scope','$timeout', function($state, $scope, $timeout){
$scope.currState = $state;
console.log("This one have some objects: ");
console.log('by reference:', $scope.currState);
console.log('by value:', JSON.parse(JSON.stringify($scope.currState)));
// console.log("But when I want to access name its empty: ");
// $timeout(function() {
// console.log($state.current.name);
// });
// use this instead:
$scope.$watch('currState.current.name', function(newValue, oldValue) {
console.log(newValue);
});
}]);
console.log('by reference:', $scope.currState);
确实有效,因为它使用了对对象的引用。当我们在控制台中看到它时,对象已经更改。
与上面console.log('by value:', JSON.parse(JSON.stringify($scope.currState)));
的输出比较,它在执行时冻结了输出。你会发现一个空的 $state.current.name
.
另见:How can I change the default behavior of console.log? (*Error console in safari, no add-on*)