2013-10-04 6 views
9

Próbuję wprowadzić dziedziczenie OOP w dyrektywach AngularJS, aby użyć formantów wielokrotnego użytku. Używam dziedziczenia Base2's Class definition. Co myślałem było wdrożenie dyrektywy jak tenWdrażanie dziedziczenia w dyrektywach AngularJS

<control-input type="text" name="vendor_name"></control-input> 

Potem stworzyłem klasę BaseControl do wspólnej funkcjonalności

angular.module('base',[]).factory('BaseControl', function() { 
    return Base.extend({ 
    'restrict': 'E', 
    'require': '^parentForm' 
    /* ... */ 
    }; 
}); 

A potem chciałbym stworzyć konkretne kontrole

angular.module('controls',['base']).factory('TextControl', function(BaseControl) { 
    return BaseControl.extend({ 
    /* specific functions like templateUrl, compile, link, etc. */ 
    }; 
}); 

Problem polega na tym, że chcę użyć pojedynczej dyrektywy control-input i określić typ w atrybutach, ale problem jest, gdy tworzę dyrektywę, ja nie k teraz jak odzyskać typ

Wszelkie pomysły?

Odpowiedz

1

Można użyć paramerów funkcji łączenia w , aby uzyskać typ każdej dyrektywy. Spójrz na poniższy kod i sprawdź konsolę. (http://jsbin.com/oZAHacA/2/)

<html ng-app="myApp"> 
    <head> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script> 
    <script> 
     var myApp = angular.module('myApp', []); 

    myApp.directive('controlInput', [function() { 
     return { 
      restrict: 'E', 
      link: function (scope, iElement, iAttrs) { 
       console.log(iAttrs.type); 
      } 
     }; 
    }]); 

    </script> 
    </head> 
<body> 

    <control-input type="text" name="vendor_name"></control-input> 

</body> 
</html> 
+0

Tak, problemem jest to, że chcę wrócić sam DDO jako dziedzictwo, wymień 'zwrot {...}' 'powrót przez nową TextControl (...)' lub coś podobnego że do tego czasu nie mam żadnych informacji na temat atrybutów ani zakresu. –