2013-08-20 6 views
31

...Bir nesneyi yönerge tanımındaki bir işleve geri döndürme arasındaki farklar? Bir <em>direktif tanımı nesnesi</em> (Ben deniyor sanırım ..?) kullanılarak (Araç Uno) Aşağıdaki kodu arasında işlevsel fark nedir

angular.module("app"). 
    directive("widgetUno", ["$http", function ($http) { 
     return { 
       // A whole bunch of crap going on here 
      }, 
      templateUrl: "widgetUno.html" 
     }; 
    }]); 

... Ve Widget bu kod Dos?

angular.module("app").directive('widgetDos', function($http) { 
    return function(scope, element, attrs) { 
     // A whole bunch of crap going on here 
    }; 
}); 

Ben Widget Dos içine Widget Uno gibi bir direktif dönüştürmek çalışıyorum ama templateUrl nerede başvuru? Widget Dos'de bu mümkün mü?

cevap

42

Yalnızca yönerge içinde bir işlev döndürmek, tam tanımda link işlevi için bir kısa yoldur.

Eğer dışında bir şey belirtiyorsanız bir link fonksiyonu (templateUrl gibi) daha sonra bunu uzun bir yol yazmak gerekir:

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" 
     }; 
    }]); 

Bu fark aslında burada belgelenmiştir - http://docs.angularjs.org/guide/directive

1

Şöyle çalışması gerekir:

angular.module("app").directive('widgetDos', function($http) { 
    return { 
     templateUrl: "....", 
     link: function(scope, element, attrs) { 
      // A whole bunch of crap going on here 
     }; 
    } 
}); 

Ayrıca bkz http://docs.angularjs.org/guide/directive (uzun versiyon). Bir örnek var.

8

Bir işlev döndürme aslında şu kısayoludur:

angular.module("app").directive('widgetDos', function($http) { 
    return { 
     link: function(scope, element, attrs) { 
      //... 
     }; 
    } 
}); 

Yönerginizin şablona, ​​denetleyiciye vb. Gereksinimi olmaması durumunda kullanın. Bunun dışında, bu iki çağrı yaklaşımı arasında hiçbir işlevsel fark yoktur.

İlgili konular