2014-01-13 2 views
2

У меня есть приложение с угловым основанием. Он использует Jade для шаблонов. Я хочу скрыть или показать куски моей страницы в зависимости от переменной NODE_ENV, которую я использую для запуска узла.Передача NODE_ENV в Angular

Что-то вроде этого (не уверен, о том, как проверить «еще не» с нг-если):

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

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

Кикер, что testingmode определяется тем, что переменная NODE_ENV есть. Я могу получить доступ к этой переменной в моих нефритовых шаблонах, но не знаю, как ее получить в моей области.

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')); 
}); 

Не проверить точный код, но вы получите суть.

Смежные вопросы