除了创建工厂或服务之外,还有其他方法吗?
答案 0 :(得分:3)
有几种方法可以在状态控制器之间共享数据:
$scope
上,以便所讨论的所有控制器都能看到本地范围内的数据。resolve
配置)在共同的祖先状态。$stateParams
(仅在某些特定情况下有用)。第一个通常是最好的选择,因为将数据放在$scope
上也可以让您轻松$watch
更改。
答案 1 :(得分:0)
嗯这可能不是最好的,但它在我开发的应用程序中非常适合我,并且诀窍是使用本地存储,例如在我的搜索视图中:
controller: 'SearchCtrl'
state: 'search'
我从Web服务获得结果列表并将其存储如下:
localStorage.setItem('results', angular.toJson(results)); // assuming a json response
然后我与另一个州$state.transitionTo('results')
进行了共同转换:
controller: 'ResultCtrl'
state: 'results'
最后从localStarage
的范围变量中获取ResultCtrl
的结果:
$scope.results = angular.fromJson(localStorage.getItem('results'));
答案 2 :(得分:0)
您可以使用以下路线:
.state('parent', {
url: "/parent",
abstract: true,
controller: 'ParentCtrl'
})
.state('app.foo', {
url: "/foo",
views: {
'menuContent' :{
templateUrl: "templates/foo.html",
controller: 'FooCtrl'
}
}
})
从FooCtrl
访问ParentCtrl