当前位置:  开发笔记 > 后端 > 正文

Angular ui-router在相同状态的子视图之间传递数据

如何解决《Angularui-router在相同状态的子视图之间传递数据》经验,为你挑选了1个好方法。

如何访问处于相同状态的其他子视图.我正在构建一个顶部有一个工具栏的页面和一个侧边栏,我想要一个工具栏上的按钮来打开/关闭边栏中的侧边栏和按钮来更改内容.很简单它都在同一个控制器中,但我所做的是使用ui-router的子视图功能,如下所示:

.state('dash', {
    url: '/dash/:id',
    views: {
      nav: {
        controller: 'NavCtrl',
        controllerAs: 'ctrl',
        templateUrl: '/views/navbar.html'
      },
      sidebar: {
        controller: 'SidebarCtrl',
        controllerAs: 'ctrl',
        templateUrl: '/views/sidebar.html'
      },
      content: {
        controller: 'DashCtrl',
        controllerAs: 'ctrl',
        templateUrl: '/views/dash.html'
      }
    }
  })

UI看起来像这样:

在此输入图像描述



1> Chris T..:

定义解析并将其用作存储激活的"破折号"状态的公共数据的位置.

app.config(function($stateProvider) {
  $stateProvider.state('dash', {
    url: '/',
    resolve: { 
      dashData: function() { 
        return { input: "default value" }; 
      } 
    },
    views: {
      nav: {
        controller: function() {

        },
        controllerAs: 'ctrl',
        template: '

This is the Navbar

' }, sidebar: { controller: function(dashData) { // Inject reference to resolve object this.dashData = dashData; }, controllerAs: 'ctrl', template: 'content data visible in ' + 'the sidebar: {{ ctrl.dashData.input }}' }, content: { controller: function(dashData) { // Inject reference to resolve object this.dashData = dashData; }, controllerAs: 'ctrl', template: '' + 'This is bound to dashData.input' } } }) });

将共享对象注入每个控制器

app.controller('DashCtrl', function(dashData, $scope) {
  $scope.dashData = dashData;
});
app.controller('... ....

我把这个例子放在了一个plunker中:http://plnkr.co/edit/8M1zXN0W5ybiB8KyxvqW?p = preview

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有