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

Angularjs 如果在模板中使用ng show或ng init,则ngtransclude异常,angularjs,angularjs-directive,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

每当我的指令模板包含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) {

              }
          }
      });
app.directive('test',function(){
返回{
//工作
模板:“
”, //不起作用——ucomment //模板:“
”, 是的, 链接:函数(范围、元素、属性){ } } });
用法

{{item.id}

你知道为什么会发生这种情况,解决办法是什么吗

问题的症结就在这里

若要查看其实际效果,请切换工作模板和非工作模板上的注释


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

提示:不要将这些数据放在link fn中,因为链接是在应用模板之后发生的。现在可以了,但将来可能会有所帮助

我不知道如果模板已经显示,为什么要使用nh show?若您有一些显示/隐藏模板的切换函数,您可以使用它,但我认为默认情况下该模板是ng show=“true”


这只是我的想法。

我根据你的建议更新了plunker,但仍然没有骰子。