angular uirouter打开错误的网址

时间:2017-12-17 21:10:05

标签: javascript angularjs angular-ui-router jhipster

我是Angular 1的新手,必须在现有的webapp上实现新功能。该应用程序使用jhipster生成后端和前端的一些部分(Angular 1和uirouter)。

所以我尝试使用自己的路线和state这样的路线,大部分是从webapp的现有组件中复制和粘贴的:

(function() {
    'use strict';

    angular
        .module('artemisApp')
        .config(stateConfig);

    stateConfig.$inject = ['$stateProvider'];

  function stateConfig($stateProvider) {
    $stateProvider
      .state('model-comparison-exercise-for-course', {
        parent: 'entity',
        url: '/course/{courseid}/model-comparison-exercise',
        data: {
            authorities: ['ROLE_ADMIN', 'ROLE_TA'],
            pageTitle: 'artemisApp.modelComparisonExercise.home.title'
        },
        views: {
            'content@': {
                templateUrl: 'app/entities/model-comparison-exercise/model-comparison-exercise.html',
                controller: 'ModelComparisonExerciseController',
                controllerAs: 'vm'
            }
        },
        resolve: {
            translatePartialLoader: ['$translate', '$translatePartialLoader', function ($translate, $translatePartialLoader) {
                $translatePartialLoader.addPart('modelComparisonExercise');
                $translatePartialLoader.addPart('exercise');
                $translatePartialLoader.addPart('global');
                return $translate.refresh();
            }],
            courseEntity: ['$stateParams', 'Course', function ($stateParams, Course) {
                return Course.get({id: $stateParams.courseid}).$promise;
            }]
        }
    });
}

})();

然后我尝试使用以下代码打开此路线:

<a ui-sref="model-comparison-exercise-for-course({courseid:course.id})"
   data-translate="artemisApp.course.modelComparisonExercises"></a>

点击该链接会触发http get请求,该请求将返回http状态代码404:http://localhost:8080/app/entities/model-comparison-exercise/model-comparison-exercise.html

实际上,应该打开的网址是http://localhost:8080/#/course/1/model-comparison-exercise

知道我可以配置错误吗?

1 个答案:

答案 0 :(得分:2)

请尝试将'content@'更改为'content@artemisApp'

正如here所说:

  

@之前的符号是您要匹配的视图的名称,@之后的符号是对ui-view指令应存在的模板的状态的引用。

<a>标记未关闭:

<a ui-sref="model-comparison-exercise-for-course({courseid:course.id})"
   data-translate="artemisApp.course.modelComparisonExercises"></a>

通过搜索代码,我发现文件夹model-comparison-exercise.html中不存在model-comparison-exercise。除了model-comparison-exercises.html存在。