替代Angular转换旧版本中的后备内容

时间:2016-02-07 10:27:17

标签: javascript angularjs angularjs-directive angularjs-ng-transclude

Transclude fallback content是Angular V1.5.0中添加的功能之一 我正在为Angular编写dateTimePicker module并希望为下一版本添加自定义用户输入模板功能,而Transclude fallback content正是我想要的,因为如果用户没有在指令中放置任何内容,默认模板将会注入。
但我不能强迫每个人使用Angular V1.5.X
有没有替代方案?

另一种解决方案:
因为我有一个巨大的html模板,不能使它成为单行字符串或...将它放在JS文件中,我分叉Mario Lamacchia的想法。

HTML:

<div>
    <ng-transclude></ng-transclude> 
    <div ng-if="defaultTemplate">...</div>
</div>

JS:

link: function(scope, element, attrs, ngModel) {
    if (!element.find('ng-transclude').children().length) {
        scope.defaultTemplate = true;
        element.find('ng-transclude').remove();
    }
}

1 个答案:

答案 0 :(得分:3)

在1.3.x版本中添加此链接功能会得到与转换回退内容的1.5.x示例相同的结果

link: function(scope, element) {
  if (!element.find('ng-transclude').children().length) {
    element.find('button').append('<b style="color: red">Button1</b>');
  }
}

Plunker:http://plnkr.co/edit/7VHLsv