加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在angularjs ui-router中的状态内的两个ui视图之间共享数据

发布时间:2020-12-17 07:16:55 所属栏目:安全 来源:网络整理
导读:我正在使用angular-ui ui-router作为网络应用程序.我有这样的状态/视图配置: ....state('parentState',{ url:'/:id',views: { 'main@parent': { controller: 'ParentMainCtrl',},'sub@parent': { controller: 'ParentSubCtrl',})... 现在,我需要在两个状态(
我正在使用angular-ui ui-router作为网络应用程序.我有这样的状态/视图配置:

...
.state('parentState',{
    url:'/:id',views: {
        'main@parent': {
            controller: 'ParentMainCtrl',},'sub@parent': {
            controller: 'ParentSubCtrl',})
...

现在,我需要在两个状态(主要和子状态)之间共享数据.一种方法是将解析添加到parentState并将依赖项注入视图的控制器,但之后我将无法在两个视图之间进行数据绑定.我尝试将数据属性添加到parentState,但似乎子视图不会继承它.在这种状态下,兄弟视图之间进行双向数据绑定的方法是什么?

解决方法

在我看来,视图路由器不应该对数据负责.

您应该创建一个包含数据和操作的服务来修改该数据,然后将该服务注入到您的两个控制器中.

关于这一点的好处是,如果你想与除ParentMainCtrl和ParentSubCtrl之外的更多模块共享这个数据源,你可以将服务作为依赖项添加到这些模块.

var myApp = angular.module('myApp',[]);

angular.module('myApp').factory('sharedService',['$http',function($http) {
    return {
      data: {},// functions to get/set properties in data
    }
  }
]);

angular.module('myApp').controller('ParentMainCtrl',['$scope','sharedService',function($scope,sharedService) {
    $scope.data = sharedService.data;
  }
]);

angular.module('myApp').controller('ParentSubCtrl',sharedService) {
    $scope.data = sharedService.data;
  }
]);

http://plnkr.co/edit/WHIWUQRJNAmhQQKKJDDl?p=preview

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读