2015-06-02 21 views
7

Tôi có một tình huống sau đây (một bộ lọc dịch trong một dịch vụ, sử dụng trong các tập tin HTML)AngularJS programatically gọi bộ lọc từ dịch vụ (sắp xếp theo bộ lọc tùy chỉnh)

// serviceFile 
 
angular.module('myModule') 
 
    .service('translation') 
 
    .filter('translate', function(translation) { 
 
    // translate stuff 
 
    return 'translatedString'; 
 
    }); 
 

 
// controllerFile 
 
angular.module('myModule') 
 
    .controller('StringsController', function(blabla, translation) { 
 
    $scope.mySort = function() { 
 
     return "some magic should happen here"; 
 
    }; 
 
    }); 
 

 
// htmlFile 
 
<tr ng-repeat="string in strings"> 
 
    <td> 
 
     {{ string | translate: 'name' }} 
 
    </td> 
 
</tr>

(Các ở trên mã hoạt động, nhưng có lẽ một số phần quan trọng đã bị bỏ qua do thiếu kinh nghiệm của tôi)

Vấn đề của tôi là tôi phải sắp xếp dựa trên các giá trị đã dịch (chẳng hạn như string in strings | orderBy: mySearch) và tôi có thể ' t tìm cách gọi bộ lọc theo chương trình từ StringsController.mySearch

P.S. bộ lọc không được trả lại từ dịch vụ (không biết nếu điều này là có liên quan)

+0

bạn cần tiêm _ $ filter_ và sử dụng nó như '$ filter ('translation') (params)' – Grundy

+0

@Grundy, bạn có thể cho tôi một liên kết newbie không? Tôi chỉ sử dụng angularjs rất cơ bản và dịch vụ thậm chí không phải là mã của tôi. Tôi thậm chí không biết tôi có nên tiêm nó vào bộ điều khiển hay dịch vụ không? – norb

+0

cũng thấy [guid for filters] (https://docs.angularjs.org/guide/filter) – Grundy

Trả lời

3

Bạn có thể thấy guide for filters

Vì vậy, trong trường hợp của bạn phụ thuộc từ defininition .filter('translate', bạn có thể sử dụng nó như

.controller('StringsController', function(blabla, $filter) { 
    //simple transtale 
    var translatedString = $filter('translate')(stringForTranslate); 

    //ordering 
    var ordered = $filter('orderBy')(arrayForOrdering,function(el){ return $filter('translate')(el); }) 

}); 
+0

Tôi đã thêm $ scope.mySearch = function (string) {return $ filter ('translate') (chuỗi) ; } để điều khiển, và cũng là $ fitler lúc đầu ... vấn đề duy nhất của tôi còn lại là làm thế nào để có được tên '... btw cảm ơn sự giúp đỡ cho đến nay .. – norb

+0

bạn có thể cung cấp một mẫu phức tạp? có thể với [jsfiddle] (http://jsfiddle.net/) hoặc [plunker] (http://plnkr.co/edit/), ở đây một chương trình một phương pháp cơ bản, làm thế nào bạn có thể lọc và đặt hàng trong bộ điều khiển của bạn – Grundy

+0

trong khi làm jsfiddle tôi tìm thấy giải pháp ... phải sửa đổi thành $ filter ('translate') (stringForTranslate, 'name'); cảm ơn vì tất cả sự giúp đỡ – norb

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