2014-08-29 20 views
7

Kịch bản
Tôi có một mảng của người sử dụng có chứa thông tin về họ, tôi làm một ng-repeat kết hợp với một chỉ thị tùy chỉnh mà tạo ra một thẻ sử dụng HTML, giữ phạm vi của mỗi thẻ tương đối cho người dùng cá nhân, bên trong mô hình người dùng có một giá trị mà tôi cần phải lọc với bộ lọc tùy chỉnh trước khi mẫu được biên dịch, bởi vì nếu tôi làm mẫu bên trong mẫu thì thời gian cần để lọc sẽ không hiển thị chú giải công cụ cho đến khi giá trị đã sẵn sàng và có vẻ như một cái gì đó không hoạt động.AngularJs - Sử dụng bộ lọc tùy chỉnh bên trong bộ điều khiển chỉ thị

Mã của tôi cho đến nay

// userCard directive 
angular.module('userCard', []).directive('UserCard', function() { 
    return { 
    restrict: 'EA', 
    templateUrl: 'userCard.tpl.html', 
    scope: { 
     user: '=' 
    }, 
    controller: ['$scope', 'fromNowFilter', function($scope, fromNowFilter) { 

     angular.forEach($scope.user.reminders, function(reminder) { 
      reminder.last_sent = reminder.last_sent === null ? 'No reminder has been sent!' : fromNowFilter(reminder.last_sent); 
     }); 
    }], 
    link: function(scope, element) { 
     // Add the base class to the user card element 
     element.addClass('user-card'); 
    } 
    }; 
}); 


// fromNow custom filter 
angular.module('userCard').filter('fromNow', function() { 
    return function(date) { 
    return moment(date).fromNow(); 
    }; 
}); 


// The error I keep getting 
Unknown provider: fromNowFilterProvider <- fromNowFilter 

Trả lời

21

Hãy thử tiêm filterprovider và chạy bộ lọc của bạn.

controller: ['$scope', '$filter', function($scope, $filter) { 
     var fromNowFilter = $filter('fromNow'); 
     angular.forEach($scope.user.reminders, function(reminder) { 
      reminder.last_sent = reminder.last_sent === null ? 'No reminder has been sent!' : fromNowFilter(reminder.last_sent); 
     }); 
    }], 
+0

Chỉ cố gắng nhưng vẫn gặp lỗi tương tự, tôi đang cố gắng theo dõi [Tài liệu] (https://docs.angularjs.org/guide/filter), điều tôi hiểu là bạn cần postfix tên bộ lọc của bạn với 'Filter' để tiêm nó. – CupOfJoe

+0

@CupOfJoe Yeah cũng đã hoạt động tốt .. Bạn có chắc là bạn đã tải scipt cho bộ lọc trong ứng dụng của mình không? – PSL

+0

Có, tôi đã thử nghiệm nó bên trong mẫu và nó hoạt động, nhưng không thể làm cho nó được tiêm bên trong bộ điều khiển chỉ thị. – CupOfJoe

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