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)代码>然后在函数中,当它改变时,你可以检查电流是否设置在那里。是的,我想我还是不明白为什么状态。如果状态
没有设置,电流将为空。你的小提琴正是我在回答中写的。我知道发生了,只是不知道为什么。