2015-09-06 2 views
1

У меня есть веб-сервис, который возвращает шаблон, например.Как скомпилировать произвольные шаблоны/модели с помощью angularjs?

Hello {{Name}}, Today is {{Yesterday}} 

Тогда у меня есть еще один сайт, который возвращает объект JSON

{ 
    "Name": "Mr. Been", 
    "Yesterday": "a nice day", 
    "otherdata": "unknown" 
} 

Можно ли заменить ключи от шаблона с данными из объекта JSON?

Данные шаблона и веб-сервиса полностью динамичны (неизвестны).

ответ

1

Да, вы можете воспользоваться услугой $interpolate. Он преобразует строку с потенциальными выражениями угловой интерполяции в функцию, которая принимает объект области видимости и возвращает интерполированную строку.

Вы бы использовать его как это:

// get the template and data to interpolate however is necessary 
var template = getTemplate(); 
var locals = getLocals(); 

// perform interpolation 
var result = $interpolate(template)(locals); 

Есть некоторые другие опции, которые вы можете пройти, чтобы настроить, как работает функция $interpolate, так take a look at the documentation для более подробной информации.

+0

Это замечательно, не было известно об этой «контекстной» вещи, помещенной вместо '$ scope' +1 –

+0

Кажется, это аннулирует значения, которые не удается найти (например, если {{Some}} не существует он заменяет его пустой строкой). Можно ли отключить это поведение? Причина в том, что один и тот же шаблон необходимо интерполировать несколькими объектами/json последовательно –

+0

@ AnthonyHunt Сначала объединить все объекты вместе, * затем * интерполировать. –

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