Bạn cũng có thể sử dụng dịch vụ $ inject để nhận bất kỳ dịch vụ nào bạn thích. Tôi thấy hữu ích nếu tôi không biết tên dịch vụ trước thời hạn nhưng biết giao diện dịch vụ. Ví dụ, một chỉ thị sẽ cắm một bảng vào một điểm cuối ngResource hoặc một nút xóa bản ghi chung mà tương tác với bất kỳ điểm kết thúc api nào. Bạn không muốn thực hiện lại chỉ thị bảng cho mọi bộ điều khiển hoặc nguồn dữ liệu.
template.html
<div my-directive api-service='ServiceName'></div>
my-directive.directive.coffee
angular.module 'my.module'
.factory 'myDirective', ($injector) ->
directive =
restrict: 'A'
link: (scope, element, attributes) ->
scope.apiService = $injector.get(attributes.apiService)
tại dịch vụ 'vô danh' của bạn là hoàn toàn có sẵn. Nếu đó là ngResource ví dụ sau đó bạn có thể sử dụng giao diện ngResource tiêu chuẩn để có được dữ liệu của bạn
Ví dụ:
scope.apiService.query((response) ->
scope.data = response
, (errorResponse) ->
console.log "ERROR fetching data for service: #{attributes.apiService}"
console.log errorResponse.data
)
Tôi đã tìm thấy kỹ thuật này là rất hữu ích khi thực hiện các yếu tố tương tác với thiết bị đầu cuối API đặc biệt .
Nguồn
2016-08-26 08:25:26
Tôi nghĩ rằng đây là một giải pháp tốt hơn vì nó hoạt động ngay cả sau khi rút ngắn mã của bạn. – czerasz
Tôi phải thêm '_myData = myData' trước khi trả về {} và sau đó tham chiếu đối tượng dưới dạng _myData bên trong hàm liên kết. – Jelling
Cảm ơn @Jelling. Tôi phải làm điều tương tự. Tôi tự hỏi liệu có ai ở đó có thể cho chúng tôi biết tại sao ...? – sfletche