Angular编译HTML并阻止更改

时间:2017-01-20 12:04:51

标签: javascript angularjs

我有一些模板,我使用angular $ compile填充了我的数据库中的一些数据。然后我将其插入iframe中以将其显示给用户,然后将其保存在数据库中。

我的问题是,当我从模板中取出模板时,通过绑定内容放置在其中的数据会消失。我需要做些什么才能保留绑定数据?

我尝试创建一个新范围并使用现有范围,但在两种情况下都失败了。

这是我编译内容的地方:

//Method is called by the user
$scope.mountTemplate = function() {

    //Load the template the user chose before
    TemplateLoader.getTemplate($scope.modelTemplate.template + '.html').then(function(responseTemplate) {

        //Load the template the user chose before, here i just read the html from a file
        loadRegisters(url, $scope.formContentData.selected, append)
            .then(function(response) {
                $scope.itensTemplate = response.map(function(elem) { return configRegisters(elem); });

                var compiledHTML = $compile(responseTemplate)($scope);

                //Here the data appears
                $('#divVisualizer').append(compiledHTML);

                $timeout(function() {
                    //At this point, when i log it the ng-repeat and other binded data disappears
                    console.log('compiledHTML', compiledHTML);
                }, 1000);

                //At this point, when i place it inside the iframe the ng-repeat and other binded data disappears
                $scope.trustedHTML = compiledHTML;
            }, function(response) {
                console.log('response', response);
            });
    }, function(response) {
        console.log(response);
    });
}

如何保存绑定数据?此外,我需要编译的响应是一个字符串,它作为一个对象返回。我怎么转换它?

修改

为了澄清我的应用程序的作用:我构建了一个简报构建器,用户从数据库中选择一些寄存器,并使用这些寄存器填充模板,之后将其保存在DB上以通过稍后发邮件。

1 个答案:

答案 0 :(得分:0)

我设法使用服务和指令解决了我的问题,并使用延迟来帮助加载和填充数据