Javascript Angularjs可以';无法获取当前状态

Javascript Angularjs可以';无法获取当前状态,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我的控制器中有以下各项: $scope.state = $state 如果我这样做:console.log($scope.state)-我的当前对象内部状态告诉我需要的所有信息,包括名称、url等。但是,我无法实际获取它 因为如果我这样做: console.log($scope.state.current); console.log(JSON.stringify($scope.state))); 我将此作为我的当前状态: {name: "", url: "^", views: null, a

我的控制器中有以下各项:

$scope.state = $state
如果我这样做:
console.log($scope.state)-我的当前对象内部状态告诉我需要的所有信息,包括名称、url等。但是,我无法实际获取它

因为如果我这样做:

console.log($scope.state.current);
console.log(JSON.stringify($scope.state)));
我将此作为我的当前状态:

{name: "", url: "^", views: null, abstract: true}

有人知道我如何才能真正获得当前状态的名称吗?

这是因为当你登录控制台时,你会得到一个引用。因此,当您打开对象并在控制台中查看它时,它可能已经被填充了

var state = { current: {name: "", url: "^", views: null, abstract: true},  otherData: [{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}] };

console.log(state);
console.log(state.current);
console.log(JSON.stringify(state));

state.current.name = 'something';
jsFiddle:


在chrome的控制台中,您将看到一个可以展开的对象,当前状态对象(其中它将为空),然后是一个字符串化对象,其中它也将为空。如果展开第一个对象,您将看到名称已更改为“something”。

这对我很有效。谢谢@MathewBerg解释为什么我的方法没有

.run(['$rootScope', '$state', '$stateParams',
  function ($rootScope, $state, $stateParams) {
    $rootScope.$state = $state;
    $rootScope.$stateParams = $stateParams;
}])

这没有任何意义,因为如果我做了所有3个控制台日志,
$scope.state
会提供我所需要的。为什么stringify版本或更深一步的版本也不能给我这个?很抱歉你不相信我。我已经包括了一把小提琴给你看。关于如何实际获取当前状态有什么建议吗?我看不到你的代码的其余部分,所以我不确定它在哪里变化。您可以进行角度监视
$scope.watch('state',function(){…},true)然后在函数中,当它改变时,你可以检查电流是否设置在那里。是的,我想我还是不明白为什么
状态。如果
状态
没有设置,电流将为空。你的小提琴正是我在回答中写的。我知道发生了,只是不知道为什么。