在链接功能中使用.attr附加ngBindHtml函数不起作用

时间:2016-01-05 21:33:27

标签: angularjs ng-bind-html

我试图在指令的链接函数中的应用程序中附加ngBindHtml指令。指令所在的模块注入ngSanitize,如:

 angular.module('ui.bootstrap.contextMenu', ['ngSanitize'])
    .directive('contextMenu', cm);

其中cm是指令函数。链接功能如下:

var link = function ($scope, element, attrs) {
        element.on('contextmenu', function (event) {
            event.stopPropagation();
            $scope.$apply(function () {
                event.preventDefault();
                var options = $scope.$eval(attrs.contextMenu);
                var model = $scope.$eval(attrs.model);
                if (options instanceof Array) {
                    if (options.length === 0) {
                        return;
                    }
                    renderContextMenu($scope, event, options, model);
                } else {
                    throw '"' + attrs.contextMenu + '" not an array';
                }
            });
        });
    };

其中renderContextMenu勾勒出将附加到页面正文的html。在这个函数中,我有以下几行代码:

$div.attr('ng-bind-html', text);
$a.append($div);

应该产生类似的东西:

<a><div ng-bind-html="the text"></div></a>

确实如此。问题是文本实际上没有显示。有没有人对此有任何想法?

1 个答案:

答案 0 :(得分:1)

我认为&#34; angular-y&#34;这样做的方法是将html代码放在您希望直接绑定到模板中的上下文菜单中,只需隐藏/显示它:只有在有效的contextmenu事件发生并且有选项时才显示它。长度> 0