在没有指令的情况下将模板编译成angular字符串
compiling a template into a string in angular without a directive
我正试图将一些html添加到tinyMCE文本区域中(tinyMCE可以在可编辑文本区域中显示html,同时允许用户实时操作它们)。
所以,假设我的模板是:
var template = '<span>hello {{ user.name }}</span>'
我正在努力:
- 使用当前控制器的作用域编译模板
- 把它串成一个变量(编译后)
- 将其连接到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
,它将使<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
的处理。
相关文章:
- AngularJS:带有HTML和angular表达式的指令;编译”;具有外部范围的内容
- 如何在编译时更新yeoman angular中的html路径
- Angular JS$编译服务导致$watch内存泄漏
- 超链接;编译angular指令内的模板后无法工作
- 检测在angular中传递给$compile的字符串的最佳方法是可编译的
- 如何定义$compile服务何时在angular中完全完成编译
- 在 Angular 中,如何从指令访问我编译的模板
- Angular 指令内部 HTML 重新编译,动态创建绑定属性
- 为什么这个 Angular 指令没有在 Jasmine 单元测试中编译
- Angular 在使用 jq 追加方法时是否编译指令
- Angular - 编译指令后无法访问控制器方法
- 如何将 Angular 模板编译为文本
- 无法在单元测试中编译从 Angular 1.3.0 开始的包含指令
- 在 Angular 中,当我收到一些新数据时,如何强制模板重新编译
- 如何在angular外部加载的页面上手动编译angular指令
- 在没有指令的情况下将模板编译成angular字符串
- angular templateUrl在动态编译中扰乱了链接顺序
- 如何编译angular指令中的新元素.attr()
- 即使运行了digest(),在test中编译angular指令也会失败
- 未编译angular指令中新添加的元素