Differences between returning an object vs a function in a directive definition?

angularjs, angularjs-directive, javascript

Solution

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

Problem

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?

Original source