2014-10-23 2 views
1

Я пытаюсь создать базовое приложение, используя MEAN Stack.AngularJS + NodeJS Маршрутизация - не работает

Я боролся за последний час или около того, чтобы сделать основной маршрут, но я терплю неудачу.

Всякий раз, когда я получить доступ к моему приложению на / шаблона, даваемый угловой маршрут не будет оказывать шаблон, даже если я могу вручную получить доступ к нему в templateUrl в браузере.

Это мой код:

express.js

var express = require('express'), 
    bodyParser = require('body-parser'), 
    session = require('express-session'), 
    logger = require('morgan'), 
    cookieParser = require('cookie-parser'); 

module.exports = function(app, config){ 
    app.set('views', config.rootPath + '/server/views'); 
    app.set('view engine', 'jade'); 

    app.use(logger('dev')); 

    app.use(cookieParser()); 

    app.use(bodyParser.json()); 
    app.use(bodyParser.urlencoded({ 
     extended: true 
    })); 

    app.use(session({secret: 'contact demo'})); 

    app.use(express.static(config.rootPath + '/public')); 
}; 

routes.js

var mongoose = require('mongoose'), 
    Contact = mongoose.model('Contact'); 

module.exports = function(app, router) { 

    router.get('/partials/*', function(req, res) { 
     res.render('../../public/app/' + req.params[0]); 
    }); 

    router.get('*', function(req, res) { 
     res.render('index'); 
    }); 

    app.use('/', router); 
}; 

server.js

// Module Dependencies 
var express = require('express'), 
    mongoose = require('mongoose'); 

// Initialize Express Application 
var app = express(), 
    env = process.env.NODE_ENV = process.env.NODE_ENV || 'development'; 

// Config Parameters 
var config = require('./server/config/config')[env]; 

// Invoke Express Config File 
require('./server/config/express')(app, config); 

// Invoke Mongoose Config File 
require('./server/config/mongoose')(config); 

// Invoke Routes File 
require('./server/config/routes')(app, express.Router()); 

app.listen(config.port); 
console.log('Listening on port ' + config.port + '...'); 

app.js

angular.module('demo', ['ngResource', 'ngRoute']) 
    .config(function($routeProvider, $locationProvider) { 

     $routeProvider 
      .when('/', {templateUrl: '/partials/main/main'}); 

     $locationProvider.html5Mode(true); 
    }); 

layout.jade

doctype 
html 
    head 
     title Contact Management Application 
     link(rel="stylesheet" href="/vendor/bootstrap/dist/css/bootstrap.min.css") 
     link(rel="stylesheet" href="/css/style.css") 
    body(ng-app="demo") 
     block main-content 
     include scripts 

index.jade

extends ../includes/layout 

block main-content 
    h1 Hello World 

    section.content 
     div(ng-view) 

main.jade

section.content 
    h1 I should be rendered! 

EDIT

Это моя структура папок:

--public/ 
    --app/ 
    --main/ 
     --main.jade 
    --app.js 
    --css/ 
    --vendor/ 

--server/ 
    --config/ 
    --express.js 
    --routes.js 
    --includes/ 
    --layout.jade 
    --scripts.jade 
    --views/ 
    --index.jade 
--server.js 

ответ

0

Где вы звоните команды REST в вашем угловом коде? Похоже, вы просто переходите на другую страницу в приложении, но вы не говорите ему, чтобы вытащить с сервера.

+0

Благодарим вас за ответ! Я подумал, что мне нужно указать Angular на шаблон, поскольку я уже определил путь partials в бэкэнд. –

Смежные вопросы