【发布时间】:2014-11-25 19:25:42
【问题描述】:
除了创建工厂或服务之外,还有其他方法吗?
【问题讨论】:
-
在问了这个之后,我意识到我不应该这样做。 使用工厂!!!
标签: angularjs angular-ui-router
除了创建工厂或服务之外,还有其他方法吗?
【问题讨论】:
标签: angularjs angular-ui-router
有几种方法可以在状态控制器之间共享数据:
$scope 上,这样所有有问题的控制器都可以在其本地范围内看到数据。resolve 配置)。$stateParams 传递(仅在某些非常特殊的情况下有用)。第一个通常是最好的选择,因为将数据放在$scope 上也可以让您轻松$watch 进行更改。
【讨论】:
嗯,这可能不是最好的,但它在我开发的应用程序中非常适合我,诀窍是使用本地存储,例如在我的搜索视图中:
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'));
【讨论】:
你可以有这样的路线:
.state('parent', {
url: "/parent",
abstract: true,
controller: 'ParentCtrl'
})
.state('app.foo', {
url: "/foo",
views: {
'menuContent' :{
templateUrl: "templates/foo.html",
controller: 'FooCtrl'
}
}
})
并从FooCtrl访问ParentCtrl中的函数和数据
【讨论】: