Angular.js和Express:路由不起作用

时间:2013-11-08 18:25:57

标签: node.js angularjs express routing views

我已经在互联网上搜索了一个有类似问题的人,但仍然没有解决方案。在将我的应用程序与Angular-Express-seed,Angular-Express-Master以及任何其他流行的示例进行比较时,似乎没有任何内容被破坏,但它只是不起作用。有没有人知道为什么会这样?

我会尝试在不删除可能有问题的代码的情况下备用细节:

/app.js

// All environments
app.set('views', __dirname + '/views');
app.set('port', process.env.PORT || 3000);
app.engine('.html', require('ejs').renderFile);
app.set('view engine', 'html');
app.set("view options", { layout: false });
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session(
    { secret: 'spunkydelicious',
      cookie : {
        maxAge: (3600000*24*7) // 1 week
      }
    }
));
app.use(passport.initialize());
app.use(passport.session());
app.use(require('express-jquery')('/jquery.js'));
app.use(express.static(path.join(__dirname, '/public')));
app.use(app.router);

...

app.get('/', index.index);
app.get('/partials/:name', index.partials);
app.get('*', index.index);

其中index.index,index.partials等的'index'对应于:

/app/controllers/index.js

exports.index = function(req, res){
    res.render('index');

};

exports.partials = function(req, res) {
    var name = req.params.name;
    console.log('Hurah!');
    res.render('partials/' + name);
};

/public/javascripts/app.js

'use strict';

//声明依赖于过滤器和服务的应用级模块

angular.module('emit', []).
config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
    $routeProvider.when( '/', {
        templateURL:'partials/test',
        controller: AppCtrl
    }).
    otherwise({
      redirectTo: '/'
    });

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

/public/javascripts/controllers.js

'use strict';

/* Controllers */

function AppCtrl($scope) {
  console.log('123');
}

/views/index.html

<!DOCTYPE html>
<html ng-app="emit">
  <head>
    <base href="/">
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>

    <div ng-view></div>

    <!-- Plugins -->
    <script src="/javascripts/vendor/angular/angular.js"></script>

    <!-- Angular -->
    <script src="/javascripts/app.js"></script>
    <script src="/javascripts/controllers.js"></script>

    <!-- Other scripts -->
  **strong text**  <script src="/javascripts/script.js"></script>
  </body>
</html>

/views/partials/test.html

<div class="">Yay!</div>
赦免代码的长度,我只是无法破解我做错了什么。客户端控制台的服务器不记录任何错误。我可以采取任何调试步骤吗?

1 个答案:

答案 0 :(得分:6)

经过漫长而令人困惑的调试会话后,我发现了这一点......令人惊讶的是,错误发生在templateURL - 它应该是templateUrl