我正在构建一个Ionic应用程序,需要动态地将XML转换为HTML,然后将其附加到视图中。由于我没有XSLT文件,因此我需要手动构建每个标记转换,以构建一个HTML块,一旦完成此转换,就会插入到视图中。即便如此,由于尚未识别或翻译所有节点,因此我没有完整的翻译。
此外,一些XML节点正在转换为Angular指令,以利用扩展/折叠。因此,我需要进入$compile
- 土地。这是我最终创建的指令:
angular.module('xxx').directive('xmlTransformer', function ($compile) {
return {
link: link,
replace: true,
restrict: 'E',
scope: {
content: '='
},
template: '<div class="xml-transformed"></div>'
};
function link(scope, element) {
element.append($compile(scope.content)(scope));
}
}
内容来自父视图,因为它控制着需要呈现的XML部分(它被分解为多个部分,因此视图只会带回一个部分)。
这非常有效,直到我需要在element
完成追加后触发事件。此视图还需要搜索功能,用户可以从具有预设查询的全局搜索页面进入。这会产生一个计时问题,搜索功能试图找到尚未完全附加的数据匹配。
我尝试了以下方法来尝试正确计时:
priority: 1001
的属性指令,并运行传入的方法。$timeout(fn, 0)
确保“DOM已完全呈现”。 在内容完成追加之前,这两种方法都不起作用,方法也没有运行。我正在考虑创建一个$q
承诺,以便在element.append($compile(scope.content)(scope));
运行后我有一个回调,但我不确定它是否会起作用。
有什么想法吗?提前谢谢。