2014-01-13 54 views
2

我有一個基於節點的Angular應用程序。它使用Jade進行模板。我想根據用於啓動節點的NODE_ENV變量隱藏或顯示我的頁面塊。將NODE_ENV傳遞給角

像這樣的東西(不知道如何檢查「別的不」與NG-IF):

div(ng-if="testingmode") 
    {{somescopevar}} 

div(ng-if != "testingmode") 
    {{differentscopevar}} 

起腳是testingmode由NODE_ENV變量是什麼決定的。我可以在我的玉石模板中訪問這個變量,但不知道如何將它變成我的Angular範圍。

tl; dr:如何讓NODE_ENV進入我的角度範圍?

回答

4

就我個人而言,我會創建一個返回該值的api調用,然後使用$ http在角控器中獲取它。

在您的節點路線:

app.get('/nodeenv', function(req, res, next){ 
    return res.json({ env: app.get('env') }); 
}); 

在您的角度控制器:

$http.get('/nodeenv').success(function(data){ 
    $scope.myEnvironment = data.env; 
}); 

UPDATE:

我一直在用較新的項目在做這方面的一個新的方式產生我的根指數文件作爲節點中的模板(例如,使用doT模板)。然後將任何常量傳遞到模板中直接加載到角度。以下是你可以在環境中通過例如方式:

index.def

<html> 
<head><!-- head stuff --></head> 
<body> 
    <div>scripts and content go here</div> 

    <!-- initialise any templated constants --> 
    <script> 
     angular.module('mymodule').constant('globals', { 
      env: '{{=it.env}}' 
     }); 
    </script> 
</body> 
</html> 
1

正如你可以用gulp-replace把這個在你的編譯系統的替代品。我敢肯定,咕嚕具有類似的功能。

的index.html

<script> 
    var ENV = 'NODE_ENV'; // replaced by gulp 
</script> 

gulpfile.js

gulp.task('setEnv', function(){ 
    gulp.src(['index.html']) 
    .pipe(replace(/NODE_ENV/g, process.env.NODE_ENV)) 
    .pipe(gulp.dest('build/index.html')); 
}); 

還沒有測試確切的代碼,但你得到的要點。