2014-12-13 64 views
2

我在下面看到一個錯誤,我不明白爲什麼。有任何想法嗎?Angular指令 - 要求跨越?

HTML,

<button ng-click="loadForm()">Load Directive Form</button> 
<div data-my-form></div> 

角,

app.directive('myForm', function() { 
     return { 
      replace:true, 
      controller:function($scope){ 
      $scope.isLoaded = false; 
      $scope.loadForm = function(){ 
       $scope.isLoaded = true; 
      } 
      }, 
      template: '<div ng-if="isLoaded" ng-include="\'form.php\'" ></div>', 
      link:function(scope, element) { 

      } 
     } 
    }); 

誤差,

Error: [$compile:multidir] Multiple directives [ngInclude, ngInclude] asking for transclusion on: <div data-my-form="" ng-if="isLoaded" ng-include="'form.php'"> 

一個解決方法,

'<div><div ng-if="isLoaded" ng-include="\'form.php\'" ></div></div>' 

但爲什麼我必須換行它在一個div?它是一個有角度的錯誤?

+2

取代已過時 – 2014-12-13 06:51:47

回答

8

錯誤很明顯。在試圖使用包含的相同元素上有兩條指令:

1. ng-if 
2. ng-include 

元素只能應用一個包含。

要解決,試試這個來代替:

<div data-my-form="" ng-if="isLoaded"> 
    <div ng-include="'form.php'"> </div> 
</div>