3

Transclude fallback contentAngular V1.5.0
に追加された機能の 1 つです。私は Angular 用のdateTimePicker モジュールを作成しており、次のバージョンのカスタム ユーザー入力テンプレート機能を追加したいと考えていますTransclude fallback content。ユーザーがディレクティブ内に何も配置しない場合、デフォルト テンプレート注入します。
しかし、すべての人に Angular V1.5.X の使用を強制することはできません
。別の解決策はありますか?

別の解決策:
私は巨大なhtmlテンプレートを持っていて、それを1行の文字列にしたり、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();
    }
}
4

1 に答える 1

3

このリンク機能を 1.3.x バージョンに追加すると、transclude フォールバック コンテンツの 1.5.x の例と同じ結果が得られます。

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

プランカー: http://plnkr.co/edit/7VHLsv

于 2016-02-07T11:39:31.427 に答える