如何管理ui-router或在不同的$state中共享$scope
How to manage ui-router or share $scope in different $state
我有一个AngularJS站点,我想显示的对象资源是:
- 每个用户都有一个基本帐户,这将显示在一个单独的页面(命名为
basic-page
); - 用户有几个子帐户,每个子帐户将显示在不同的页面(命名为
app-page
); -
basic-page
将显示子帐户的夏季信息,因此app-page
可以共享basic-page
的loaded $http data
更适合代码重用。
作为目的,我在下面使用ui-router
定义状态:
.state('user', {
url: '/user/{id}',
title: 'User-Page',
templateUrl: helper.basepath('user.html')
})
.state('user.app', {
url: '/{app}',
title: 'App-Page',
emplateUrl: helper.basepath('app.html')
})
注意状态user.app
是user
的子状态。
我想要的是当我进入user.app
时,它可以重用user
中的数据,即使它是一个不同的页面,user
不需要包含ui-view
来包含user.app
的模板。但实际上我输入user.app
,它不显示app.html
(因为我没有在user.html
中包含ui-view)。
也许这不是正确使用ui-router的方法。
那么,我如何在不同的$state
中共享数据?谁能给我举个详细的例子?谢谢你。
跨控制器共享数据
任何时候你需要跨状态共享数据,你都需要创建一个服务/工厂,你可以在与这些状态相关联的控制器中实例化它。
工厂将由需要共享的不同数据的基本getter和setter组成。就像你在java中构建getter和setter来跨类共享一样。
示例代码.factory('yourFactory', function ($scope) {
return {
get: function () {
return $scope.someValue;
},
set: function(value){
$scope.someValue = value;
}
};
})
免责声明:我没有测试过这段代码,但它应该可以完成获取和设置一些值的工作,你需要在你的应用程序中访问。
演示:用这种方法工作柱塞。
选择:1
这是"Dirty"选项,您可以使用$rootScope
设置全局变量。它可以在任何地方访问,因为它是全局的,我强烈建议你不要这样做,尽管我还是会向你指出这一点。
选择:2
当一个状态处于"活动"状态时,它的所有祖先状态也隐式地处于活动状态。因此,您可以考虑父子关系来构建状态,并以分层方式跨范围共享数据。官方文件和工作活塞与上述方法。
相关文章:
- AngularJS:ng之后,重复$scope值未按预期更新
- $ionicplatform内的$scope不;不起作用
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- 使用$scope方法时的ControllerAs语法
- 如何将ngrepeat下的ngmodel绑定到$scope
- 另一个if(!$scope.$$phase)$scope$apply()szenario-需要帮助才能通关
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- $scope变量被视为字符串AngularJs
- ng在更新$scope后重复不更新信息
- 正在获取Angular以检测$scope中的更改
- 如何惯用地手动销毁scope&在AngularJS中重新创建
- Understanding Javascript scope with "var that = this&qu
- AngularJS,angular.element($0).scope()揭示了每个控制器的函数
- Ng出口无法访问父$scope
- ng选项-用vm替换$scope
- 将$scope数据传递给$stateProvider.state解析
- 带有$state.go和$scope的参数
- 如何管理ui-router或在不同的$state中共享$scope
- AngularJS在state onEnter函数中访问控制器的$scope
- Angular UI Router 1.0——为什么在不离开state的情况下调用$scope.$watch('