javascript - 在 angularjs 中绑定(bind) HTML 属性

标签 javascript angularjs ng-bind-html

我有这个代码:

<span data-icon="{{table.addIcon || '&#xe603;'}}"></span>

该跨度创建一个如下所示的图标:

Plus icon

但是,我想为使用此指令的开发人员提供定义新图标的可能性。它正在工作,但是,我遇到的问题是,假设我有这个:

$scope.table.addIcon = "&#xe070;"

而不是创建元素

<span data-icon="&#xe070;"></span> 

它会创建它

<span data-icon="&amp;#xe070;"></span>

这将无法添加图标,所以不要看到这个:

What I should have...

我的是这样的:

What I do have :(

有没有办法避免将 & 转换为 &

添加解决方案

感谢 miensol,解决方案是这样的:

.directive("changeIcon", function() {
    var d = document.createElement("div");
    return {
        restrict: "A",
        link: function($scope, $ele, $attrs) {
            log($attrs);
            var originalIcon;
            $scope.decodedIcon = $attrs.icon;
            do {
                originalIcon = $scope.decodedIcon;
                d.innerHTML = originalIcon;
                $scope.decodedIcon = d.firstChild.nodeValue;
            } while (originalIcon != $scope.decodedIcon);
            $attrs.$set('data-icon', $scope.decodedIcon);
        }
    }
})

它是这样使用的:

<span change-icon icon="{{table.addIcon || '&#xe603;'}}"></span>

最佳答案

我创建了一个示例 jsfiddle尝试您描述的问题,但我可能遗漏了一些东西。

我怀疑您看到的是 & 而不是 & 因为 View 是服务器上的 html 编码

无论哪种方式,decode html entities 都相当容易在javascript中。考虑以下示例:

m.directive('icon', function(){
    var div = document.createElement('div');

    return {
        scope: {
            icon:'='
        },
        link: function($scope,$element,$attrs){            
            var originalIcon;
            $scope.decodedIcon = $scope.icon;
            do {
                originalIcon = $scope.decodedIcon;
                div.innerHTML = originalIcon;
                $scope.decodedIcon = div.firstChild.nodeValue;
            } while (originalIcon != $scope.decodedIcon); 
            console.log('data-icon', $scope.decodedIcon);
            $attrs.$set('data-icon', $scope.decodedIcon);
        }
    };
});

你可以玩玩它here希望它能帮助解决您的问题。

关于javascript - 在 angularjs 中绑定(bind) HTML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25549874/

相关文章:

javascript - 多个css文件的同一个类或id之间的冲突

javascript - 多个音频播放器不工作 - 只有第一个(Javascript)

javascript - 即使使用类似 $scope.user={pwd1 :'' } 的 $watch 也无法在 Modal 中工作

angularjs - 如何监视使用 ng-bind-html 创建的 ng-model

javascript - Google 脚本 HTML 请求 - 发布

http - Angularjs - $http promise 错误处理

javascript - AngularJS - 触发器生成后下载 PDF

javascript - 有没有办法配置 ng-bind-html 来渲染像 '</' 这样的字符串?

angularjs - ng-bind-html 和 angular.js 错误

angularjs - 基于变量值的 ng-class