составление шаблона в строку в угловом формате без директивы

0

Я пытаюсь добавить некоторый html в текстовую область tinyMCE (tinyMCE может показывать html внутри этих редактируемых текстовых областей, позволяя пользователю манипулировать ими в реальном времени).

Итак, скажем, мой шаблон:

var template = '<span>hello {{ user.name }}</span>'

Я пытаюсь:

  1. скомпилируйте шаблон с текущей областью контроллера.
  2. строчить его в varialbe (после того, как он был скомпилирован)
  3. завершите его до конца редактора tinyMCE.

мой код контроллера:

// [...]
var user = {};
user.name = "john";
$scope.user = user;

$templateRequest('<PATH_TO_TEMPLATE>').then(function() {
  var linkingFunc = $compile(template);

  // if I understand correctly, this should replace the user.name with "john"
  var parsedTemplate = linkingFunc($scope);
  console.log(parsedTemplate.prop('outerHTML'));
});
// [...]

Результат parsedTemplate.prop('outerHTML'):

<span>hello {{ user.name }}</span>

Получается ли это рендеринг, только если я вставляю его в DOM после связывания его с областью?

есть ли способ получить его скомпилированным в javascript без его возврата?

Я пытаюсь получить какой-то var templateWITHOUTVariables который будет euqal <span>hello john</span>

есть идеи?

благодарю!

  • 0
    @FrailWords Я не уверен, как это помогает мне. это требует дайджеста, который я не могу сделать, так как я нахожусь в середине дайджеста. Если я пытаюсь получить доступ к шаблону в DOM без дайджеста, я вижу не обработанный шаблон. Я не могу переварить, даже если я создаю новую область, которая не связана с областью текущего контроллера.
Показать ещё 2 комментария

1 ответ

3

Благодаря @FrailWords, я решил это используя $timeout.

Поэтому мой код выглядит так:

var user = {};
user.name = "john";
$scope.user = user;

$templateRequest('<PATH_TO_TEMPLATE>').then(function() {
  var parsedTemplate = $compile(template)($scope); // at this point, the template isn't processed yet
  //timeout in order to get the template processed
  $timeout(function() {
    console.log(parsedTemplate.prop('innerHTML');
  })
});

вывод:

<span>hello john</span>

Когда выполняется $timeout, процесс $digest уже завершает обработку parsedTemplate.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню