Angular状态混淆了使用哪个控制器

时间:2016-01-08 02:33:09

标签: angularjs angular-ui-router

我的角度应用程序有两种状态。

第一:

.state('profile', {
        url: '/:user/:user_id',
        templateUrl: 'modules/profile/templates/profile.html',
        controller:'profileController',
        showClose : 'false',
        resolve: {
            USERNAME : function($stateParams){
                return $stateParams.user;
            },
            USERID : function($stateParams){
                return $stateParams.user_id;
            }
        }
    })

第二:

.state('sub-moments-everyday', {
        url: '/moments-everyday/:moment',
        templateUrl: 'modules/moments-everyday/templates/ME-submoments.html',
        controller:'subMomentsEverydayController',
    })

每当我在user州输入有效user_idprofile时,都没有问题。但每当我输入/moments-everyday/randomstring时,似乎ui-router感到困惑。它使用controllertemplate作为profile州。

请帮忙。谢谢。

1 个答案:

答案 0 :(得分:4)

您是否尝试检查状态在文件中的放置顺序? /:userid /:username检查与该模式匹配的任何URL。该模式包含两个可变参数,因此当您尝试访问/ moment-everyday /:moment时,它会看到/:userid /:username模式并调用该状态。

尝试确保在/:userid /:用户名模式之前有/ moment-everyday /:moment模式。 UI路由器从文件顶部开始,检查文件中的每个模式,直到找到第一个匹配模式。