2014-01-03 3 views
3

Мы пытаемся использовать NodeJs с HoganJ для шаблонов на стороне сервера. Однако мы также хотим использовать AngularJs для удовлетворения потребностей наших клиентов.HoganJs и AngularJs с NodeJs

Проблема заключается в том, что как HoganJs, так и AngularJs используют «{{" и "}}" для полного заполнения их потребностей компилятора. Из-за этого Хоган выталкивает, если вообще существует угловая «{{«, из-за того, как работает хоган.

Мой вопрос в том, есть ли решение, которое позволяет мне использовать как угловые, так и хоганы вместе, не сталкиваясь друг с другом.

Если нет, кто-нибудь знает, что/где/как настроить один из них, чтобы они любили друг друга и работали изящно.

Заранее спасибо ...

ответ

3

Try с

Hogan.compile(text, {delimiters: '<% %>'}); 

так что вы можете изменить разделители Hogan использует пропускание метода компиляции вариант перекрывая их.

http://comments.gmane.org/gmane.comp.lang.javascript.express/1426

NB

имо с помощью системы шаблонов бесполезно использования angularjs потому из https://stackoverflow.com/a/20270422/356380

+0

Спасибо за ответ ... но где я должен вставлять этот код? и мне нужно что-то импортировать, чтобы использовать переменную Hogan выше? Я получаю недопустимую переменную «Hogan» и «text» ... когда запускаю приложение? Есть предположения? – user153410

+0

Я обновил свой ответ – Whisher

+0

@Whisher, потому что есть данные и логика, созданные сервером, которые я (и я бы предполагал, что другие) хотят встроить в HTML * до того, как оно будет подано клиенту = почему я использую как doT, так и Angular , Но да, самый тяжелый подъем делается в Angular. – MikeSmithDev

1

альтернативы меняющегося Hogan разделителей, как другой ответ показывает ... изменить Угловой-х! Я сделал это в то время, используя точечную (который также использует {{ и }}) и она отлично работает:

у вас есть это в макете HTML:

<html ng-app="cooApp"> 

Добавьте этот сценарий для вызова Углового с пользовательской delims (Я также в том числе ссылки на угловому только для уточнения):

<script src='//ajax.googleapis.com/ajax/libs/angularjs/1.2.2/angular.min.js'></script> 
<script> 
    var cooApp = angular.module('cooApp', [], function($interpolateProvider) { 
     $interpolateProvider.startSymbol('{%'); 
     $interpolateProvider.endSymbol('%}'); 
    }); 
</script> 

Теперь просто использовать {% и %} для углового материала.

6

Если вы используете экспресс, вы можете изменить разделители Хогана так:

var app = express(); 
app.locals.delimiters = '<% %>'; 

Поместите выше перед:

app.set('view engine', 'hjs'); 

Теперь в файле page.hjs, для данных { template : "Template test" } , вы можете сделать:

<p>This is a <% template %></p> 
+2

Я использовал это решение и работает как шарм. [email protected] – santiagobasulto

0

Без изменения разделителей на Угловой 1.х вы можете использовать ng-non-bindable директивы в элементах, используемых HoganJS, усы или любой другой код такого рода:

Пример:

<div> 
    {{angularjs_variable}} 
    <div ng-non-bindable>{{hogan_variable}}</div> 
</div> 

Это полезно, если элемент содержит то, что, как представляется, AngularJS директивы и привязки, но которые следует игнорировать AngularJS. [...]

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