繁体   English   中英

动态将HTML内容作为属性传递给Angular指令

[英]Dynamically passing HTML content to Angular directives as attributes

我正在尝试使用Angular动态加载一些存储在JSON文件中的HTML。

为此,我将JSON数据读取到范围中,并将其传递给我编写的用于将HTML加载到模板中的指令。

控制者

.controller('testCtrl', function($scope, $http, $state){

    $http.get('views/foo.json').then(function(res){

      $scope.somehtml = res.data;

    });

}) 

指示

.directive('loadHtml', function($compile){

        return {
        restrict: 'AE',
        scope: {
            content: "@",
        },
        link: function(scope, element, attrs) {
            scope.content = attrs.content;
            element.html(scope.content).show();
            $compile(element.contents())(scope);
        },
        template: '{{content}}'
    };

})

这可行!

<load-html content="hello success"></load-html> 

这不是:(

<load-html content="{{somehtml}}"></load-html>

我在这里想念什么?

自己找到了解决方案,也许这对某人有帮助:

我需要“观察”指令中的属性值。

新指令:

.directive('loadHtml', function($compile){

    return {
        restrict: 'AE',
        scope: {},
        link: function(scope, element, attrs) {

            attrs.$observe('content', function(val) { /* $observing the attribute scope */
                scope.content = val;
                element.html(scope.content).show();
                $compile(element.contents())(scope);
            })
        },
        template: '{{content}}'
    };
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM