2013-04-02 24 views
36

Im sử dụng chức năng quyết tâm với một vài bộ điều khiển để lấy một số dữ liệu trước khi vẽ của một cái nhìn mới đá trong như thế này:AngularJS: cú pháp giảm bớt-thể đúng khi sử dụng quyết tâm với điều khiển

HomeCtrl.resolve = { 
    pictures: function(Picture) { 
     return Picture.getall(); 
    } 
}; 

Hiện ai biết làm thế nào để viết này, do đó, các hình ảnh dịch vụ, đó là thông qua như một đối số, không bị ghi đè khi rút gọn?

Trả lời

54

Bạn có thể tiêm phụ thuộc bằng cách sử dụng mô hình sau đây, đó là việc rút gọn bằng chứng

HomeCtrl.resolve = { 
    pictures : ['Picture', function(Picture) { 
       return Picture.getall(); 
      }] 
}; 
+7

bất kỳ nơi nào góc sử dụng DI, bạn có thể sử dụng cú pháp này –

+1

Đáng buồn thay, nó không hoạt động đối với tôi. HomeCtrl.resolve = { hình ảnh: ['$ q', hàm (a) {}] }; sẽ báo cáo Nhà cung cấp không xác định: aProvider <- a – wukong

+1

@wukong Nếu bạn cần tiêm dịch vụ '$ q', bạn nên thực hiện nó như thế này' HomeCtrl.resolve = {pictures: ['$ q', function ($ q) {} ]} ', nếu bạn cần tiêm dịch vụ' $ q' và một dịch vụ 'a', bạn nên làm như thế này' HomeCtrl.resolve = {pictures: ['$ q', 'a', hàm ($ q) , a) {}]} '. – acrmuui

2

Một cách khác để thực hiện chức năng quyết việc rút gọn an toàn:

HomeCtrl.resolve = { 
    pictures: getPictures 
}; 

getPictures.$inject = ['Picture']; 
function getPictures(Picture){ 
    return Picture.getall(); 
} 

Kỹ thuật này tận dụng thực tế là trong các hàm javascript cũng là các đối tượng và do đó có thể có các thuộc tính.

Để biết thêm thông tin, hãy truy cập https://docs.angularjs.org/guide/di và tìm kiếm "$ inject".

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