2014-10-05 10 views
5

Mam pytanie, co jest odpowiednikiem dyrektywy: kompilacja (przed/po)?Co to jest odpowiednik dyrektywy, kompilować (pre/post) w TypeScript?

Przykład w JavaScript:

angular.module('app').directive('checkBox', function() { 
    return { 
     //... my directive options 

     compile: function() { 
      return function() { 
       pre: function (scope) {} 
       post: function (scope) {} 
      } 
     } 
    } 
}); 

Co jest równoważne maszynopis do tego?

+0

Typescript tylko Javascript, więc byłoby to samo. Prawdopodobnie chciałbyś tylko opisać typy zakresów za pomocą ng.IScope – Martin

Odpowiedz

8

To będzie równoważne:

public compile = (element: JQuery, attrs: angular.IAttributes, transclude: any): DirectivePrePost => { 
      return { 
       pre: ($scope: any, element: JQuery, attrs: angular.IAttributes) => { 

       }, 
       post: ($scope: any, element: JQuery, attrs: angular.IAttributes) => { 

       } 
      }; 
     } 
1

Niepoprawna wartość zwrotu z compile. Powinieneś zwrócić obiekt, a nie funkcję:

compile: function() { 
      return { // no `function()` 
       pre: function (scope) {} 
       post: function (scope) {} 
      } 
     } 

Ten fragment kodu działa tak jak w przypadku TypeScript.

+0

Co złego? Twoja odpowiedź jest zbyt ogólnikowa. Proszę popraw to. – IamStalker

+2

Basarat mówi, że zwrot z wartości z funkcji kompilacji powinien być obiektem, a nie funkcją. Jeśli spojrzysz na jego przykład, jest to bardzo jasne. Zwracasz funkcję() {...} powinieneś zwrócić obiekt {...} – Martin

+0

Jak to dotyczy mojego pytania? To e-mail – IamStalker

6

jeśli używasz odwołanie od http://definitelytyped.org/tsd/

to jak

compile = (tElem: ng.IAugmentedJQuery, tAttrs: ng.IAttributes, transclude: ng.ITranscludeFunction): ng.IDirectivePrePost => { 
      return { 
       pre: (scope: IOrderDetailDirScope, iElem: ng.IAugmentedJQuery, iAttrs: ng.IAttributes) => { 

       }, 
       post: (scope: IOrderDetailDirScope, iElem: ng.IAugmentedJQuery, iAttrs: ng.IAttributes) => { 

       } 
      }; 
     }; 
+0

To działa dla mnie. –

Powiązane problemy