【问题标题】:Angularjs ui-router abstract state with resolve带有解析的Angularjs ui-router抽象状态
【发布时间】:2016-02-23 04:40:37
【问题描述】:

是否可以使用需要解析数据的 ui-router 进行抽象状态?我需要加载带有个人资料信息的页面的上半部分,然后在页面底部有一个加载其他详细信息的子导航。这个想法是,无论我处于哪个子状态,抽象状态每次都会加载配置文件信息。它似乎不起作用。

例子:

.state('app.profile', {
    abstract: true,
    url: 'user/:username',
    views: {
        content: {
            templateUrl: 'views/frontend/profile.html',
            controller: 'ProfileCtrl',
            resolve: {
                data: ['$stateParams', 'ProfileService', function ($stateParams, ProfileService) {
                    var username = $stateParams.username;
                    return ProfileService.getProfile(username);
                }]
            }
        }
    }
})
.state('app.profile.something', {
    url: '',
    views: {
        profile: {
            templateUrl: 'views/frontend/profile.something.html',
            controller: 'ProfileCtrl',
            resolve: {
                data: ['$stateParams', 'ProfileService', function ($stateParams, ProfileService) {
                    var username = $stateParams.username;
                    return ProfileService.getProfileSomething(username);
                }]
            }
        }
    }
})

【问题讨论】:

  • 将 url 添加到子状态并将 url 属性清空到父状态。那就试试
  • 对不起,我不确定我是否关注你。
  • 那行不通。 $stateParams.username 最终在抽象状态上未定义。

标签: angularjs angular-ui-router


【解决方案1】:

这里的解决方案是区分解析数据的名称。检查这个答案:

还有它的plunker

所以在我们的例子中,我们需要对父级进行这种更改

resolve: {
    dataParent: ['$stateParams', 'ProfileService', function ($stateParams, ProfileService) {
        var username = $stateParams.username;
        return ProfileService.getProfile(username);
    }]
}

这在孩子身上

resolve: {
    dataChild: ['$stateParams', 'ProfileService', function ($stateParams, ProfileService) {
        var username = $stateParams.username;
        return ProfileService.getProfileSomething(username);
    }]
}

因此,我们将拥有这些:

// parent state
resolve : { dataParent: ... } 
// child state
resolve : { dataChild: ... } 

一个working example应该比其他词好...

【讨论】:

  • 看起来我也必须创建单独的控制器,因为我只想注入我正在抓取的数据,对吗?
  • 我想说,不同状态的不同控制器是很好的做法。大多数情况下,如果父母应该处理与孩子不同的事情......这有帮助吗?
  • 很高兴看到这一点! ;) 享受令人惊叹的 UI-Router ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多