AngularJS是否具有NG-BIND-HTML-TEMPLATE指令



我有一个指令,可以具有动态模板,并带有表达式。

如果我使用 ng-bind-html,则表达式将无法评估,如果我使用 ng-bin-template,则html零件将作为文本(编码html)而不是html返回。

那么是否有 ng-bind-html-template之类的东西?还是我必须自己做?

现在,我正在使用一个函数来允许开发人员返回渲染的HTML本身,但宁愿使用模板。

更新:@charlietfl"动态模板"是指动态并由最终用户定义的东西,我不知道其中有什么。

这是我的代码:

// Columns definition in directive's config provided by the user
columns: [
    {
        title: 'نام سنجه',
        name: 'measurename',
        key: 'measurecode',
        headerTemplate: function (content, col) {
            return col.title + " <small><span class='label label-info'>واحد</span></small>";
        },
        template: function (item, content, col) {
            return item.measurename + " <small><span class='label label-info'>" + item.unitname + "</span></small>";
        }
    }
],

如何渲染:

$scope.renderHeaderCell = function (col) {
    var content = col.title;
    if (isFunction(col.headerTemplate)) {
        var _content = col.headerTemplate(content, col);
        if (angular.isDefined(_content) && _content !== false) {
             content = _content;
        } else if (angular.isDefined(col.headerTemplate)) {
            content = col.headerTemplate;
            // If this is not used, the HTML content will be encoded to be safe
            return $sce.trustAsHtml(content);
        };
    }
}

如何在模板中使用:

<td ng-repeat="col in config.columns" width="200" ng-bind-html="renderHeaderCell(col)"></td>

但是,我想将模板传递到这样的配置:

headerTemplate: "{{col.title}} <small><span class='label label-info'>واحد</span></small>",

并在这样的模板中使用它:

<td ng-repeat="col in config.columns" width="200" ng-bind-html-template="col.headerTemplate"></td>

尝试使用$sce.trustAsHtmlng-bind-html。在您的控制器中,将您的来源设置为信任:

vm.Overview = $sce.trustAsHtml(Overview)

html:

<p ng-bind-html="vm.Overview"></p>

最新更新