簡體   English   中英

MEAN堆棧Angular顯示Express中的對象,但不顯示HTML

[英]MEAN stack Angular shows Object from Express but not HTML

我試圖建立一個Blog網站,但我堅持創建單個“發布”視圖頁面。 當我從href獲得/ post / id頁面時,一切正常,但是當我手動刷新頁面或共享鏈接時,我得到這樣的頁面:

{"_id":"56fa7443c1542bdc3bdb3857","user":{"_id":"56fa6b0cc83017643c50c5ad",

被這個問題困擾了幾天,我該如何解決?

快速代碼(./app/backend/routes/post.js)

router.get('/:id', function (req, res) {
    Model.findById(req.params.id, function(err, post){
        return res.status(200).send(post);
    })
    .populate('user');
});

Angular PostCtrl代碼(./app/frontend/js/controller/post.js)

$http.get('/post/'+$routeParams.id).success(function (post) {
    post.text = $sce.trustAsHtml(post.text);
    $scope.post = post;

}).error(function (error, status) {
    $scope.errorMessage = error + ' (code:' + status + ')';
});

路由(./app/frontend/js/app.js)

$routeProvider
.when('/', {
  templateUrl: 'views/main.html',
  controller: 'MainCtrl'
})
.when('/post/:id', {
  templateUrl: 'views/post.html',
  controller: 'PostCtrl'
})

我把它修好了。 我不得不將Angular路由從.when('/post/:id'更改為.when .when('/blog/:id' ,並將hrefs更改為/blog/:id

似乎角路由和快速路由不能相同。 Express似乎仍將數據發送到/post/:id而angular從那里獲取數據並將其顯示到/blog/:id 刷新頁面后,一切似乎都可以正常工作了。 現在只需要在/post/:id隱藏敏感數據,或者找到一種用戶可以訪問/post/:id

我正在嘗試理解您的代碼,這就是我能想到的

// this is how the route should be using populate
router.get('/post/:id', function (req, res) {
  Model.findOne({_id: req.params.id}).populate('user').exec(function (error, post) { 
    if (post) {
      res.status(200).json(post);
    } else {  
      // handle error here...
    }
  })
});

其他的一切看起來還不錯。

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM