2016-04-07 15 views
0

Ich habe seit langer Zeit ein Problem konfrontiert. Kannst du mir bitte dabei helfen? Eigentlich möchte ich an vielen Stellen die Tabelle Direktive verwenden. Also habe ich eine Direktive erstellt und eckige UI-Gitter in sie eingebunden. Aber ich bekomme einen Kompilierfehler.Angular: Kompilieren ist nicht definiert

Error: angular.min.js:102 ReferenceError: compile is not defined

Aber ich konnte das Gitter Inhalt

laden Was ich hier falsch gemacht haben?

HTML 
<div ng-controller="ctrl1 as two"> 
    <ltcg-table><ltcg-table>  
</div> 
<div ng-controller="ctrl2 as two"> 
    <ltcg-table><ltcg-table>  
</div> 

JS 

myApp.directive('ltcgTable', function($compile) { 
      return { 
       restrict: 'E', 
       transclude: true,  
       replace: false,        
       scope: { }, 
       controller: Controller, 
       controllerAs: 'Controller', 
       bindToController: true,    
       compile: compile 
      } 

     }); 
+0

Ich weiß nicht, was es tun wird, aber verwenden Sie 'compile: $ compile', anstatt 'compile: compile'. – Roy

+0

Danke. aber während der Verwendung von compile: $ compile Fehler erhalten angular.min.js: 102 Fehler: [$ compile: multidir] http://errors.angularjs.org/1.3.15/$compile/multidir?p0=ltcgTable&p1=uiGrid...p3 =% 3Cltcg-table% 20ui-grid% 3D% 22gridOptionen% 22% 20class% 3D% 22ng-scope% 22% 3E – klmuralimohan

Antwort

0

die compile Funktion (zweiter Teil von compile: compile) nicht definiert ist. Es sollte eine Funktion in Form sein:

function compile(tElement, tAttrs, transclude) { ... } 

So versuchen, die Richtlinie wie die Definition so:

myApp.directive('ltcgTable', function($compile) { 
    return { 
     restrict: 'E', 
     transclude: true,  
     replace: false,        
     scope: { }, 
     controller: Controller, 
     controllerAs: 'Controller', 
     bindToController: true,    
     compile: function(tElement, tAttr, transclude) { 
      //do some stuff here 
     } 
    } 

}); 

Oder alternativ, wenn Sie spezielle und die Netzwerke nichts tun müssen so wie es ist, lassen Sie einfach das Feld compile außerhalb der Richtungsangabe.

+0

Danke für die Antwort. Aber kein Glück, wenn ich Compile-Funktion verwende Ich bekomme einen Fehler "angular.min.js: 102 Fehler: [$ compile: multidir] http://errors.angularjs.org/1.3.15/$compile/multidir?p0 = ltcgTable & p1 = uGrid & p2 = transclusion & p3 =% 3Cltcg-tabelle% 20ui-grid% 3D% 22gridOptionen% 22% 3E " – klmuralimohan

+0

Brauchen Sie wirklich die Transclude, um wahr zu sein? Brauchen Sie wirklich die Kompilierfunktion? Brauchen Sie wirklich einen Anweisungsbereich? Wenn nicht, lassen Sie diese Felder aus der Konfiguration der Richtlinie heraus. – fikkatra

+0

Ja, ich brauche Spielraum für die Isolierung, weil ich diese Richtlinie wiederverwenden möchte. – klmuralimohan

Verwandte Themen