Я пытаюсь добавить некоторый html в текстовую область tinyMCE (tinyMCE может показывать html внутри этих редактируемых текстовых областей, позволяя пользователю манипулировать ими в реальном времени).
Итак, скажем, мой шаблон:
var template = '<span>hello {{ user.name }}</span>'
Я пытаюсь:
мой код контроллера:
// [...]
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>
есть идеи?
благодарю!
Благодаря @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
.