Tôi đang sử dụng AngularJS 1.0.2 với jQuery 1.8.2 và tôi đang cố gắng để có AngularJS tiêm phụ thuộc vào đối tượng, giống như nó làm cho bộ điều khiển. Bạn có thể tìm thấy một ví dụ cơ bản trên jsFiddle, trong đó bạn sẽ tìm thấy hai bộ điều khiển (List
và NewItem
), một đối tượng (Item
) và mô-đun có dịch vụ (tương ứng là services
và communication
).Có AngularJS tiêm phụ thuộc vào đối tượng như nó đã làm cho bộ điều khiển
Vấn đề của tôi là với Item
:
var Item = function (name, price) {
var self = this;
self.name = name;
self.price = price;
self.pretty = function() {
return self.name + ": " + self.price;
};
};
Trong đó tôi cần phải sử dụng một số điều bên ngoài, chúng ta hãy nói rằng tôi muốn phương pháp pretty
để định dạng price
tài sản cho một chuỗi tiền tệ-aware:
self.pretty = function() {
return self.name + ": " + $filter("currency")(self.price);
};
Nhưng điều này sẽ không hoạt động vì $filter
không được xác định. (Tâm trí bạn, việc sử dụng $filter
chỉ là một ví dụ, nó có thể là bất cứ điều gì.)
Và sửa đổi var Item = function (name, price) {
để var Item = function ($filter, name, price) {
sẽ không làm việc quá, vì nó không phải AngularJS của những người tạo ra các đối tượng (như trong trường hợp của các bộ điều khiển), tôi đây.
Vì vậy, làm thế nào tôi có thể có AngularJS tạo đối tượng cho tôi, hoặc có nó giải quyết sự phụ thuộc tôi cần?
Something như var item = angular.create(Item, $scope.name, $scope.price);
hoặc var item = new Item(angular.inject("filter"), $scope.name, $scope.price);
Tôi nghĩ ...
Đây chính xác là những gì tôi đang tìm kiếm. Tôi * đã * nhìn vào trang tài liệu '$ injector', nhưng bỏ lỡ' instantiate (type, local) '... Sigh ... – Albireo