2014-08-29 127 views
7

情景
我有一個包含關於它們的信息的用戶的陣列,我做一個ng-repeat與生成一個HTML用戶卡的自定義指令相結合,保持每個卡相對的範圍對於單個用戶,在用戶模型中,有一個值需要在模板被編譯之前用自定義過濾器進行過濾,因爲如果我在模板內部執行過濾,則需要過濾的時間會使工具提示不顯示,直到該值已準備就緒,看起來好像有些東西不起作用。AngularJs - 指令控制器內使用自定義過濾器

到目前爲止我的代碼

// 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 

回答

21

嘗試注入filterprovider並運行你的過濾器。

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

剛剛嘗試過,但仍然得到相同的錯誤,我試圖按照Angular [文檔](https://docs.angularjs.org/guide/filter),我的理解是,你需要用'Filter'後綴你的過濾器名稱來注入它。 – CupOfJoe 2014-08-29 01:18:26

+0

@CupOfJoe是的,應該工作以及..你確定你已經在你的應用程序中加載過濾器的scipt? – PSL 2014-08-29 01:20:45

+0

是的,我在模板內測試它,它工作,但不能'讓它注入指令控制器。 – CupOfJoe 2014-08-29 01:27:57

相關問題