如果在模板中使用ng-show或ng-init,则ngtransclude异常

时间:2013-09-04 18:56:43

标签: angularjs angularjs-directive

每当我的指令模板包含ng-show或ng-init和ng-transclude时,我都会收到以下javascript错误:TypeError:undefined不是函数

指令

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

1 个答案:

答案 0 :(得分:0)

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

提示:不要将这些数据放在链接fn中,因为在应用模板后会发生链接。现在它可行,但也许它可以在将来有用。

我不知道为什么你会使用nh-show,如果模板已经显示?你可以使用它,如果你有一些显示/隐藏模板的切换功能,但我认为该模板默认为ng-show =“true”。

Thouse只是我的想法。