附加HTML后触发的指令事件

时间:2016-03-13 19:35:47

标签: javascript angularjs xml ionic-framework

我正在构建一个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完成追加后触发事件。此视图需要搜索功能,用户可以从具有预设查询的全局搜索页面进入。这会产生一个计时问题,搜索功能试图找到尚未完全附加的数据匹配。

我尝试了以下方法来尝试正确计时:

  1. 创建一个具有priority: 1001的属性指令,并运行传入的方法。
  2. 注意何时附加了主元素,并使用$timeout(fn, 0)确保“DOM已完全呈现”。
  3. 在内容完成追加之前,这两种方法都不起作用,方法也没有运行。我正在考虑创建一个$q承诺,以便在element.append($compile(scope.content)(scope));运行后我有一个回调,但我不确定它是否会起作用。

    有什么想法吗?提前谢谢。

0 个答案:

没有答案