2

ディレクティブ テンプレートに ng-show または ng-init と ng-transclude が含まれている場合は常に、次の JavaScript エラーが発生します: TypeError: undefined is not a function

指令

app.directive('test', function () {
          return {
              //works
              template: '<div><div ><ul><li ng-repeat="item in items"><div ng-transclude></div></li></ul></div></div>',
              //does not work -- ucomment
              //template: '<div><div ng-show="true"><ul><li ng-repeat="item in items"><div ng-transclude></div></li></ul></div></div>',
              transclude:true,

              link: function (scope, element, attrs) {

              }
          }
      });

使用法 <div test> <div>{{item.id}}</div> </div>

なぜこれが起こっているのか、それに対する修正は何ですか?

問題のプランカーはここにあります。

実際の動作を確認するには、機能しているテンプレートと機能していないテンプレートのコメントを切り替えます

http://plnkr.co/edit/AqyORo?p=preview

4

1 に答える 1

0

$scope.items = [{ id: 1}, { id: 2}, { id: 3}, { id: 4 }];

ヒント : テンプレートが適用された後にリンクが発生するため、そのデータをリンク fn に配置しないでください。現在は機能していますが、将来的に役立つ可能性があります。

テンプレートが既に表示されている場合、なぜ nh-show を使用するのかわかりませんか? テンプレートを表示/非表示にするトグル機能があれば使用できますが、デフォルトではテンプレートは ng-show="true" だと思います。

これらは私の考えです。

于 2013-09-04T19:11:07.070 に答える