【发布时间】:2013-11-20 20:55:11
【问题描述】:
我已经在互联网上搜寻有类似问题的人,但仍然没有解决方案。在将我的应用程序与 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
'使用严格';
// 声明依赖于过滤器和服务的应用级模块
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>
请原谅代码的长度,我只是无法破解我做错了什么。客户端控制台的服务器不会记录任何错误。我可以采取任何调试步骤吗?
【问题讨论】:
-
我认为你的问题是 partials/test.html 的位置。默认情况下,Angular 将在“根”下查找它,在您的情况下,它将在 PUBLIC/partials/test.html 下而不是在 VIEWS/partials/test.html 下
-
是的,试试 public/views/partials 和 public/views/text.html
-
是的,我试着玩弄这个,但没有结果。将我的应用程序与 [Angular-Seed] (github.com/btford/angular-express-seed) 进行比较后,它应该可以很好地从服务器加载视图,因为它们使用 Jade 渲染加载它们。但我确实认为你正在做一些事情,因为快速和角度路由系统似乎正在竞争。
标签: node.js angularjs express routing views