Angularjs 标题:重新加载页面使用angular在Node.js中获取json文本

Angularjs 标题:重新加载页面使用angular在Node.js中获取json文本,angularjs,node.js,Angularjs,Node.js,比如说,从索引页面,我移动到带有模板的详细页面() 问题是,当我重新加载详细信息页面时,屏幕显示json文本,如下所示: {"id":1,"title":"foo","teaser":"foo"} 为什么我使用json文本而不是与开头相同的页面 server.js文件: var express = require('express'), app = express(), lastId = 4; var posts = [ { id: 1, title: 'f

比如说,从索引页面,我移动到带有模板的详细页面()

问题是,当我重新加载详细信息页面时,屏幕显示json文本,如下所示:

{"id":1,"title":"foo","teaser":"foo"}
为什么我使用json文本而不是与开头相同的页面

server.js文件:

var express = require('express'),
    app     = express(),
    lastId  = 4;

var posts = [
    { id: 1, title: 'foo', teaser: 'foo' },
    { id: 2, title: 'bar', teaser: 'bar' },
    { id: 3, title: 'foobar', teaser: 'foobar' },
    { id: 4, title: 'baz', teaser: 'baz' }
];

function getPostIdx (id)
{
    for (var i = posts.length - 1; i >= 0; i--) {
        if (posts[i].id === id)
            return i;
    }
    return null;
}

app.use('/', express.static(__dirname + '/public'));
app.use(express.bodyParser());

app.listen(8080, function () {
    console.log("server listen on port 8080");
});

app.get('/', function (req, res) {
    res.send(JSON.stringify(posts));
});

app.get('/posts/:postid', function (req, res) {
    var postIdx = getPostIdx(parseInt(req.params.postid)),
        post    = posts[postIdx];
        res.send(JSON.stringify(post));
});
var resourceDemo = angular.module('resourceDemo', ['ngResource', 'ngRoute']);

resourceDemo.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
    $locationProvider.html5Mode(true);

    $routeProvider
    .when('/', {
        templateUrl: '/partials/index.html',
        controller: 'MainCtrl'
    })
    .when('/posts/:postid', {
        templateUrl: '/partials/detail.html',
        controller: 'DetailCtrl',
        resolve: {
            post: function ($route, Post) {
                return Post.get({ postid: $route.current.params.postid }).$promise;
            }
        }
    })
    .otherwise({
        redirectTo: '/'
    });
}]);

resourceDemo.factory('Post', function ($cacheFactory, $resource) {
    var Post = $resource('/posts/:postid', {}, {
        get: { cache: true, method: 'get'}
    });
    return Post;
});

resourceDemo.controller('MainCtrl', function ($scope, Post) {
    $scope.posts = Post.query();
});

resourceDemo.controller('DetailCtrl', function ($scope, post, Post) {
    $scope.post = post;
});
<!DOCTYPE html>
<html lang="en" ng-app="resourceDemo">
<head>
    <base href="/">
    <meta charset="UTF-8">
    <title>Resource</title>
</head>
<body>
    <h1>Resource demo</h1>
    <div ng-view></div>
    <script src="bower_components/angular/angular.js"></script>
    <script src="bower_components/angular-resource/angular-resource.js"></script>
    <script src="bower_components/angular-route/angular-route.js"></script>
    <script src="src/app.js"></script>
</body>
</html>
app.js文件:

var express = require('express'),
    app     = express(),
    lastId  = 4;

var posts = [
    { id: 1, title: 'foo', teaser: 'foo' },
    { id: 2, title: 'bar', teaser: 'bar' },
    { id: 3, title: 'foobar', teaser: 'foobar' },
    { id: 4, title: 'baz', teaser: 'baz' }
];

function getPostIdx (id)
{
    for (var i = posts.length - 1; i >= 0; i--) {
        if (posts[i].id === id)
            return i;
    }
    return null;
}

app.use('/', express.static(__dirname + '/public'));
app.use(express.bodyParser());

app.listen(8080, function () {
    console.log("server listen on port 8080");
});

app.get('/', function (req, res) {
    res.send(JSON.stringify(posts));
});

app.get('/posts/:postid', function (req, res) {
    var postIdx = getPostIdx(parseInt(req.params.postid)),
        post    = posts[postIdx];
        res.send(JSON.stringify(post));
});
var resourceDemo = angular.module('resourceDemo', ['ngResource', 'ngRoute']);

resourceDemo.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
    $locationProvider.html5Mode(true);

    $routeProvider
    .when('/', {
        templateUrl: '/partials/index.html',
        controller: 'MainCtrl'
    })
    .when('/posts/:postid', {
        templateUrl: '/partials/detail.html',
        controller: 'DetailCtrl',
        resolve: {
            post: function ($route, Post) {
                return Post.get({ postid: $route.current.params.postid }).$promise;
            }
        }
    })
    .otherwise({
        redirectTo: '/'
    });
}]);

resourceDemo.factory('Post', function ($cacheFactory, $resource) {
    var Post = $resource('/posts/:postid', {}, {
        get: { cache: true, method: 'get'}
    });
    return Post;
});

resourceDemo.controller('MainCtrl', function ($scope, Post) {
    $scope.posts = Post.query();
});

resourceDemo.controller('DetailCtrl', function ($scope, post, Post) {
    $scope.post = post;
});
<!DOCTYPE html>
<html lang="en" ng-app="resourceDemo">
<head>
    <base href="/">
    <meta charset="UTF-8">
    <title>Resource</title>
</head>
<body>
    <h1>Resource demo</h1>
    <div ng-view></div>
    <script src="bower_components/angular/angular.js"></script>
    <script src="bower_components/angular-resource/angular-resource.js"></script>
    <script src="bower_components/angular-route/angular-route.js"></script>
    <script src="src/app.js"></script>
</body>
</html>
index.html文件:

var express = require('express'),
    app     = express(),
    lastId  = 4;

var posts = [
    { id: 1, title: 'foo', teaser: 'foo' },
    { id: 2, title: 'bar', teaser: 'bar' },
    { id: 3, title: 'foobar', teaser: 'foobar' },
    { id: 4, title: 'baz', teaser: 'baz' }
];

function getPostIdx (id)
{
    for (var i = posts.length - 1; i >= 0; i--) {
        if (posts[i].id === id)
            return i;
    }
    return null;
}

app.use('/', express.static(__dirname + '/public'));
app.use(express.bodyParser());

app.listen(8080, function () {
    console.log("server listen on port 8080");
});

app.get('/', function (req, res) {
    res.send(JSON.stringify(posts));
});

app.get('/posts/:postid', function (req, res) {
    var postIdx = getPostIdx(parseInt(req.params.postid)),
        post    = posts[postIdx];
        res.send(JSON.stringify(post));
});
var resourceDemo = angular.module('resourceDemo', ['ngResource', 'ngRoute']);

resourceDemo.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
    $locationProvider.html5Mode(true);

    $routeProvider
    .when('/', {
        templateUrl: '/partials/index.html',
        controller: 'MainCtrl'
    })
    .when('/posts/:postid', {
        templateUrl: '/partials/detail.html',
        controller: 'DetailCtrl',
        resolve: {
            post: function ($route, Post) {
                return Post.get({ postid: $route.current.params.postid }).$promise;
            }
        }
    })
    .otherwise({
        redirectTo: '/'
    });
}]);

resourceDemo.factory('Post', function ($cacheFactory, $resource) {
    var Post = $resource('/posts/:postid', {}, {
        get: { cache: true, method: 'get'}
    });
    return Post;
});

resourceDemo.controller('MainCtrl', function ($scope, Post) {
    $scope.posts = Post.query();
});

resourceDemo.controller('DetailCtrl', function ($scope, post, Post) {
    $scope.post = post;
});
<!DOCTYPE html>
<html lang="en" ng-app="resourceDemo">
<head>
    <base href="/">
    <meta charset="UTF-8">
    <title>Resource</title>
</head>
<body>
    <h1>Resource demo</h1>
    <div ng-view></div>
    <script src="bower_components/angular/angular.js"></script>
    <script src="bower_components/angular-resource/angular-resource.js"></script>
    <script src="bower_components/angular-route/angular-route.js"></script>
    <script src="src/app.js"></script>
</body>
</html>

资源
资源演示