1

设置:玉,角度,快递,节点。

在我routeProvider的角度,我遇到了一些问题。我正在请求一个带有未捕获参数的 url。

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

     app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
      $routeProvider
         //... omitted some url/pages here
         //start of SPA
         .when('/dashboard/', {
            templateUrl: 'partials/index',
            controller: 'dashIndexCtrl'
        })
        .when('/dashboard/class/:id',{
            templateUrl: 'partials/class',
            controller: 'classCtrl'
        })
        .otherwise({
            redirectTo: '/'
        }); 

        $locationProvider.html5Mode(true);
    }]);

当我打电话localhost/dashboard/class/TEST

我被重定向到root。

我在服务器端声明我的路由如下:

app.get('/dashboard', routes.dashboard);
app.get('/dashboard/partials/:name', routes.partials);
app.get('/api/class/:id', api.classGet);

我的控制器名称与routeProvider. 在这种情况下,控制器代码如下:

app.controller('classCtrl', function($scope, $http, $routeParams){
    $http.get('/api/class/' + $routeParams.id)
        .success(function(dataJson){
            console.log(dataJson);
        });
});

为什么routeProvider缺少这个网址?我在我的控制器中设置了断点,所以我确定它没有被调用。我partials/class.jade的也没有被调用。如果您需要更多代码或目录信息,请告诉我。提前致谢。


经过进一步调查:
如果我去:localhost/dashboard/partials/class它将加载那个玉文件。所以它肯定是控制器。

目录结构,我相信这是我现在的问题....

+---\
|   +---\views
    |   +---index.jade
    |   +---dashboard.jade
    |   +---\partials
        |   +---index.jade
        |   +---class.jade
4

1 回答 1

1

查看控制台并观察 AngularJS 尝试/partials/index从那时起加载模板/dashboard/partials/index

解决方案

在配置部分设置templateUrl路径。/dashboard/partials/index

原因:angular-route.js

templateUrl = $sce.getTrustedResourceUrl(templateUrl);

if (angular.isDefined(templateUrl)) {
    next.loadedTemplateUrl = templateUrl;
    template = $http.get(templateUrl, {cache: $templateCache}).
        then(function(response) { return response.data; });
}

没有templateUrl与- 只是从应用程序的 Angular 根目录route path加载。tempalteUrl

于 2014-07-25T00:53:16.567 回答