What is the functional difference between the following code (in Widget Uno) using a directive definition object (I think it's called..?)...
angular.module("app"). directive("widgetUno", ["$http", function ($http) { return { // A whole bunch of crap going on here }, templateUrl: "widgetUno.html" }; }]);
...And this code in Widget Dos?
angular.module("app").directive('widgetDos', function($http) { return function(scope, element, attrs) { // A whole bunch of crap going on here }; });
I'm trying to convert a directive that's like Widget Uno into Widget Dos, but where do I reference the templateUrl? Is this possible in Widget Dos?
The Directive Definition Object (DDO) tells the compiler how a Directive needs to be assembled. Common properties include the link function, controller function, restrict, template, and templateUrl.
No difference. It is same object.
The simplest way to think about a directive is that it is simply a function that we run on a particular DOM element. The directive function can provide extra functionality on the element.
Answer:The link option is just a shortcut to setting up a post-link function. controller: The directive controller can be passed to another directive linking/compiling phase. It can be injected into other directices as a mean to use in inter-directive communication.
Returning only a function in a directive is just a shorthand for the link
function in the full definition.
If you are specifying something other than a link
function (like templateUrl
) then you need to write it the long way:
angular.module("app"). directive("widgetUno", ["$http", function ($http) { return { link: function(scope, element, attrs) { // A whole bunch of crap going on here }, templateUrl: "widgetUno.html" }; }]);
This difference is actually documented here - http://docs.angularjs.org/guide/directive
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With