我的控制器中有以下内容:
$scope.state = $state
如果我这样做:console.log($scope.state);
- 状态中的当前对象告诉我我需要的所有信息,包括名称,网址等。但是,我实际上无法抓住它...
因为如果我执行以下操作:
console.log($scope.state.current);
console.log(JSON.stringify($scope.state)));
我认为这是我现在的状态:
{name: "", url: "^", views: null, abstract: true}
有谁知道我如何才能真正得到当前州的名字?
答案 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;
}])