2013-08-20 25 views
31

sự khác biệt về chức năng giữa các mã sau (trong Widget Uno) sử dụng một định nghĩa đối tượng chỉ (Tôi nghĩ rằng nó được gọi là ..?) Là gì ...Sự khác nhau giữa việc trả về một đối tượng và một hàm trong định nghĩa chỉ thị?

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

... Và mã này trong Widget Dos?

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

Tôi đang cố gắng chuyển đổi một chỉ thị giống như Tiện ích con vào Widget Dos, nhưng tôi nên tham khảo templateUrl ở đâu? Điều này có thể xảy ra trong Widget Dos không?

Trả lời

42

Chỉ trả về một hàm trong chỉ thị chỉ là viết tắt của hàm link ở định nghĩa đầy đủ.

Nếu bạn đang xác định một cái gì đó khác hơn một link chức năng (như templateUrl) sau đó bạn cần phải viết nó trở thành chặng đường dài:

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

Sự khác biệt này là thực sự ghi nhận ở đây - http://docs.angularjs.org/guide/directive

1

Nó sẽ làm việc như thế này:

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

Xem thêm http://docs.angularjs.org/guide/directive (phiên bản dài). Có một ví dụ.

8

Các một hàm trả về thực sự là phím tắt cho:

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

Sử dụng nó trong trường hợp chỉ thị của bạn không cần mẫu, bộ điều khiển, vv Ngoài ra, hoàn toàn không có sự khác biệt về chức năng giữa hai cách tiếp cận gọi điện này.

Các vấn đề liên quan