Angularjs无法获得当前状态

时间:2016-01-27 18:57:16

标签: javascript angularjs angular-ui-router

我的控制器中有以下内容:

$scope.state = $state

如果我这样做:console.log($scope.state); - 状态中的当前对象告诉我我需要的所有信息,包括名称,网址等。但是,我实际上无法抓住它...

因为如果我执行以下操作:

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

我认为这是我现在的状态:

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

有谁知道我如何才能真正得到当前州的名字?

2 个答案:

答案 0 :(得分:0)

那是因为当您控制日志时,您会得到一个参考。所以当你打开对象并在控制台中查看它时,它可能已经被填满了。

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:https://jsfiddle.net/xfqbc6yr/

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

答案 1 :(得分:0)

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

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