1. ホーム
  2. angularjs

[解決済み] AngularJSのカスタムディレクティブの「replace」機能を使うには?

2023-02-17 05:40:18

質問

なぜ replace=true または replace=false は、以下のコードに何の影響も与えないのでしょうか?

replace=falseのとき、"some existing content"が表示されないのはなぜですか?

あるいは、もっと謙虚に言うと、何が replace=true/false 機能とは何か、そしてその使い方を教えてください。

JS/Angularです。

<script>
    angular.module('scopes', [])
          .controller('Ctrl', function($scope) {
                $scope.title = "hello";

          })
          .directive('myDir', function() {
            return {
              restrict: 'E',
              replace: true,
              template: '<div>{{title}}</div>'
            };
      });
</script>

HTMLです。

<div ng-controller="Ctrl">
    <my-dir><h3>some existing content</h3></my-dir>
</div>

Plunkerで見るならこちら。

http://plnkr.co/edit/4ywZGwfsKHLAoGL38vvW?p=preview

どのように解決するのですか?

replace:true は非推奨です。

Docsから。

replace ([DEPRECATED!], 次のメジャーリリース、すなわち v2.0 で削除される予定です)

テンプレートが置き換えるべきものを指定します。デフォルトは false .

  • true - を指定すると、テンプレートはディレクティブの要素を置き換えます。
  • false - の場合、テンプレートはディレクティブの要素の内容を置き換えます。

-- AngularJS の包括的なディレクティブ API

GitHubより。

Caitp-- には既知の、非常に馬鹿げた問題があるため、非推奨とされています。 replace: true には、合理的な方法で修正することができないような、既知の非常に愚かな問題があるからです。もしあなたが注意深くこれらの問題を避けることができれば、それはあなたにとって良いことですが、新しいユーザーのために、単に "これは頭痛の種になるのでやめてください" と伝える方が簡単です。

-- AngularJS 問題番号 7636


更新情報

<ブロッククオート

replace: true は非推奨で、主にここに挙げた問題のために使用することは推奨されません。新しいAngularでは完全に削除されました。

replace:trueの問題点

詳細については