如何正确定位角度局部视图

时间:2014-02-06 15:00:36

标签: angularjs express

我正在尝试遵循PluralSite AngularJS基础课程中的代码示例。 下载示例代码后,我发现在查找示例应用程序中定义的所有部分视图时存在问题。

项目结构如下:

DemoApp/app/partials
DemoApp/app/js/app.js

未找到的第一个局部视图是:

GET http://myserver.mydomain.com:63342/partials/eventList.html 404 (Not Found)  eventList.html

以下是操作系统路径的快照:

/Users/eugene/Documents/DevTraining/MeanStack/AngularJS/AngularJS Fundamentals/Demos/Original/DemoApp/app/partials/eventList.html

正如您所看到的,文件显然在那里。

以下是app.js

中定义路线的方式
'use strict';

var eventsApp = angular.module('eventsApp', ['ngResource']);
eventsApp.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
    $routeProvider.when('/events', {templateUrl: '/partials/eventList.html', controller: 'EventListController'});
    $routeProvider.when('/events/:eventId/sessions/edit/:sessionId', {templateUrl: '/partials/editSession.html', controller: 'EditSessionController'});
    $routeProvider.when('/events/:eventId/sessions/new', {templateUrl: '/partials/editSession.html', controller: 'EditSessionController'});
    $routeProvider.when('/event/:eventId', {templateUrl: '/partials/event.html', controller: 'EventController'});
    $routeProvider.when('/events/new', {templateUrl: '/partials/editEvent.html', controller: 'EditEventController'});
    $routeProvider.when('/events/edit/:eventId', {templateUrl: '/partials/editEvent.html', controller: 'EditEventController'});
    $routeProvider.when('/register', {templateUrl: '/partials/editProfile.html', controller: 'EditProfileController'});
    $routeProvider.when('/editProfile', {templateUrl: '/partials/editProfile.html', controller: 'EditProfileController'});
    $routeProvider.when('/viewProfile/:userName', {templateUrl: '/partials/viewProfile.html', controller: 'ViewProfileController'});
    $routeProvider.when('/login', {templateUrl: '/partials/login.html', controller: 'LoginController'});
    $routeProvider.otherwise({redirectTo: '/events'});
    $locationProvider.html5Mode(true);
  }]);

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

嗯,这里有两个不同的问题:

  1. 正如robertklep所指出的,我的Express配置出了问题。事实上,甚至没有涉及Express配置 - 只是一个直接的节点服务器来运行角度前端示例。为了解决这个问题,我创建了最基于的Express服务器:

    var express = require("express");
    var app = express();
    
    /* serves main page */
    app.get("/", function(req, res) {
        res.sendfile('index.html', { root: 'app' });
    });
    
    ///* serves all the static files */
    app.get(/^(.+)$/, function(req, res){
        console.log('static file request : ' + req.params);
        res.sendfile( __dirname + req.params[0]);
    });
    
    var port = process.env.PORT || 3000;
    app.listen(port, function() {
        console.log("Listening on " + port);
    });
    

    这允许我开始切断index.html页面,而index.html页面又包含angular标签和指令。

  2. 没有/部分映射正确的另一个(即原始)问题与启动Express服务器进程的事实有关。

  3. 一旦我意识到这一点,我将我的服务器脚本放在app目录中,这样就可以正确识别/ partials的映射,从而允许找到并正确提供角度部分片段。现在它有效。