2016-07-07 42 views
0

真的卡在這裏,所以會很感激幫助。我的模板引擎搞亂了角度

讓我先解釋一下我的設置/堆棧:

  • 後端 - 節點與快遞
  • 前端 - 角

片段從代碼的節點部分:

var router = express.Router(); 

router.get('/main', function(req, res){ 
    res.render('wall', {siteTitle:'Home'}); 
}); 

摘自HTML頁面:

<p>{{ siteTitle }}</p> 

<div ng-controller="wallPosts"> 
    <div ng-repeat="post in posts"> 
    <p>{{ post.title }}</p> 
    </div> 
<div> 

片段從角控制器:

var angularApp = angular.module('angularApp', []); 

angularApp.controller('wallPosts', ['$scope', '$http', function($scope, $http){ 

$http.get('/api/posts') 
    .success(function(result){ 
     $scope.posts = result; 
     console.log(result); 
    }) 
    .error(function(data, status){ 
     console.log(data); 
    }); 
}]); 

好了,所以這裏的問題是 - 在HTML頁面{{post.title}}位不會得到更新。但是,這是:{{siteTitle}}

區別 - post.title來自Angular應用程序,而siteTitle來自Node的res.render。

此外,Angular控制器中的console.log工作,因爲我想排除連接存在問題。另外,我排除了'/ api/posts'API調用,因爲它確實傳遞了一組對象。

我已經配置我的節點用「霍根快車」如下:

片段從節點:

app.engine('html', require('hogan-express')); 

所以 - 有人可以幫助我在這裏?我究竟做錯了什麼?我希望我的節點執行路由加上充當API服務器和Angular只是爲了從API中獲取數據並將它們移出到HTML頁面。

由於提前, 傻眼

+0

是'{{siteTitle}}'正在被後端渲染渲染引擎或即將客戶端,因爲它是什麼? –

+0

可能的重複。請參閱下面的答案 – wpcarro

回答

1

使用這樣{[]}因爲無論你的服務器端模板語法或您的客戶端(角)的模板語法。無論你設置哪一個都不重要。如果您選擇客戶端,請在注入$interpolateProvider的Angular config中進行設置。有關更多信息,請參閱Angular docs

此外,我認爲這是一個possible dup ...

+0

這個技巧!萬分感謝! –

1

的問題是爲您的AngularJS和模板的NodeJS發動機是相同的是模板標籤。

  1. 一種修復方法是將AngularJS模板標記更改爲 以外的{{。你可以通過配置來完成。
  2. 還是模板的NodeJS發動機的模板標籤更改爲其他 東西{{
  3. 還是速戰速決,你可以移動下面的代碼到一個單獨的HTML ,並用它包括NG-包括。

    <div ng-controller="wallPosts"> 
        <div ng-repeat="post in posts"> 
         <p>{{ post.title }}</p> 
        </div> 
    <div> 
    
+0

感謝您的輸入伴侶。我去了第一個選項使用下面的配置: $ interpolateProvider.startSymbol('{['; $ interpolateProvider.endSymbol('}]'); –