https://github.com/linnovate/meanに基づく複数ページのブログがあります。現在、タイプ URL に直接アクセスすると、データベースから返された/articles/:articleid
プレーンな JSON ( ) しか表示されません。メインページからリンク{"title":"this is the title","_id":"12345","user":"me"}
をクリックすると、Angular と DOM がメインページから既に読み込まれているため、ページは正常に解析され、Angular は返された JSON を読み取って解析します。/articles/:articleid
/
/articles/:articleid
理想的には、記事 (例: ) への直接 URL を入力して、サーバーに 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 を 1 つのページに提供する方法がわかりません。直リンクなら行く。
私のフォルダー構造: 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