我有一个基于https://github.com/linnovate/mean的多页博客。现在,当我直接转到/articles/:articleid
类型 url 时,我看到的只是{"title":"this is the title","_id":"12345","user":"me"}
从我的数据库返回的纯 JSON ()。如果我/articles/:articleid
从我的主页进入/
-> 单击一个链接,页面解析得很好,因为 Angular 和 DOM 已经从主页加载,所以 Angular 读取并解析返回的 JSON。
理想情况下,我希望能够输入文章的直接 URL(例如,/articles/:articleid
)并让服务器加载 DOM,然后让 AngularJS 返回并解析 JSON。或者有一些方法让我的服务器加载 html/css/etc。如果还没有,在解析 JSON 之前(从而避免纯 json 输出)。
节点路由:
var articles = require('../app/controllers/articles');
app.get('/articles', articles.all);
app.get('/articles/:articleId', articles.show);
app.param('articleId', articles.article); //This is called when I directly link to an article
文章型号代码:
exports.article = function(req, res, next, id) {
Article.load(id, function(err, article) {
if (err) return next(err);
if (!article) return next(new Error('Failed to load article ' + id));
console.log(req.headers['x-requested-with']);
if ( req.headers["x-requested-with"] === "XMLHttpRequest" ) {
console.log('sending jsonp' + req.article.title);
res.jsonp(req.article);
} else {
console.log("sending page");
res.render('index', { //my default JADE skeleton page
user: req.user ? JSON.stringify(req.user) : "null"
});
}
//req.article = article;
next();
});
};
exports.show = function(req, res) {
console.log(req.headers['x-requested-with']);
if ( req.headers["x-requested-with"] === "XMLHttpRequest" ) {
res.jsonp(req.article);
} else {
res.render('index', { //default page
user: req.user ? JSON.stringify(req.user) : "null"
});
}
};
角度路线:
when('/articles/:articleId', {
templateUrl: 'views/articles/view.html'
}).
处理单个文章的控制器是:
$scope.findOne = function() {
Articles.get({
articleId: $routeParams.articleId
}, function(article) {
$scope.article = article;
});
//$scope.htmlReady();
};
提前致谢!
编辑:我对标题中的内容类型做了一些检查。我现在能够辨别它是直接链接还是来自应用程序中的另一个页面,但我不知道两者如何呈现模板页面(jade)、启动 Angular 以及将 JSON 提供给它如果是直接链接就去吧。
我的文件夹结构:public--css--img--js--lib--views
我直接链接时的日志输出(它似乎/articles
用作基础):
GET /articles/72119103c2e3a932b51e000201 304 619ms
GET /articles/css/blogstyle.css 404 134ms
GET /articles/lib/angular-resource/angular-resource.js 404 126ms
GET /articles/lib/jquery/jquery.js 404 136ms
GET /articles/lib/angular/angular.js 404 134ms
GET /articles/lib/angular-cookies/angular-cookies.js 404 136ms
GET /articles/lib/bootstrap/js/bootstrap.js 404 148ms
GET /articles/lib/angular-bootstrap/ui-bootstrap-tpls.js 404 58ms
GET /articles/lib/angular-ui-utils/modules/route.js 404 67ms