2016-11-10 3 views
0

こんにちは私は、ページ上のスナップショットイメージのリストを返すときに返されたスナップショットの日付をフィルターするdatepicker(マテリアルキットUI)を提供することを検討しています。しかし、私は、インジェクタのエラーを取得: angular.js:13920エラー:[$インジェクター:UNPR]不明プロバイダ:?dayFilterFilterProvider < - dayFilterFilter http://errors.angularjs.org/1.5.8/ $インジェクター/ UNPR P0 = dayFilterFilterProvider%20%3C-NaNayFilterFilterスナップショットを返すAngularJS datepicker

がここにありますディレクティブ:

<div class="dropdown"> 
     <h3 class="dropdown-toggle" id="day-datetimepicker" role="button" data-toggle="dropdown" data-target="#"> {{ filtered.date ? filtered.date.label : 'Day' }} <span class="caret"></span></h3> 
     <ul class="dropdown-menu" role="menu" aria-labelledby="day-datetimepicker"> 
      <datetimepicker data-ng-model="dateFilter" data-datetimepicker-config="{ 
       dropdownSelector: '#day-datetimepicker', 
       minView: 'day', 
       startView: 'day' 
      }" data-on-set-time="dayFilter(newDate, 'day')"></datetimepicker> 
     </ul> 
    </div> 

    <a ng-repeat="s in chui.snapshot | dayFilter:'day' | orderBy:'-date'" 

     ng-click="select('snapshot', s); 
      modal('snapshot-keyholder', true);" 
     class="snapshot-thumbnail col-xs-6 col-sm-4 col-md-3 col-lg-2" 
    > 

がご不明な点がありましたら、私に教えてください:

(function() { 
    "use strict"; 
    app.controller("MainController", [ 
     "$rootScope", 
     "$scope", 
     function ($rootScope, $scope) { 
      $scope.dayFilter = null; 
      $scope.dayFilter = function(items, date) { 
       return function(items, date) { 
        $rootScope.dateFilter = date; 
        var filtered = []; 
        var begin, end 
        begin = date.setHours(0, 0, 0); 
        end = date.setHours(23, 59, 59); 
        angular.forEach(items, function(item) { 
         if (item > begin && item < end) { 
          filtered.push(item) 
         } 
        }) 
        console.log("Filtered day", date) 
        return filtered 
       } 
      }; 
       $scope.dayFilter(new Date(), 'date'); 

そして、ここではhtmlです。

app.filter("dayFilter",[ 
     function() { 
      return function dayFilter(items,date) { 
       var d = new Date(); 
       var filteredItems = []; 
       var begin, end 
       begin = d.setHours(0, 0, 0); 
       end = d.setHours(23, 59, 59); 
       angular.forEach(items, function(item) { 
        if (item > begin && item < end) { 
         filtered.push(item); 
        } 
       }) 
       console.log("Filtered day", d); 
       return filteredItems 
      } 
      $filter("dayFilter"); 
      // dayFilter(new Date(),'date'); 
     }]); 


I no longer get an error, but the snapshots do not appear in the output, even though I get the following in the console: 
iltered day Thu Nov 10 2016 23:59:59 GMT-0500 (COT) 
main.js?v=2016-11-08-3:89 Filtered day Thu Nov 10 2016 23:59:59 GMT-0500 (COT) 
main.js?v=2016-11-08-3:89 Filtered day Thu Nov 10 2016 23:59:59 GMT-0500 (COT) 
main.js?v=2016-11-08-3:89 Filtered day Thu Nov 10 2016 23:59:59 GMT-0500 (COT) 
main.js?v=2016-11-08-3:89 Filtered day Thu Nov 10 2016 23:59:59 GMT-0500 (COT) 
main.js?v=2016-11-08-3:89 Filtered day Thu Nov 10 2016 23:59:59 GMT-0500 (COT) 
main.js?v=2016-11-08-3:89 Filtered day Thu Nov 10 2016 23:59:59 GMT-0500 (COT) 
main.js?v=2016-11-08-3:89 Filtered day Thu Nov 10 2016 23:59:59 GMT-0500 (COT) 
main.js?v=2016-11-08-3:89 Filtered day Thu Nov 10 2016 23:59:59 GMT-0500 (COT) 
+0

ああを参照モジュールにフィルタを追加するには、module.filter方法を使用ポストでは、私はジャバスクリプトの中括弧とHTMLの最初のdivを閉じなかったことを認識しますが、スクリプト内では閉じています(コピーしたときに、スクリプトの他のディレクティブと部分関連するこの部分に、私はそれらの後の部分を閉じたので。 –

+0

'$ scope'はフィルタ関数に注入できません。 '$ scope 'は、' ng-controller'指令またはカスタム指令によってインスタンス化されるコントローラにのみ注入可能です。 – georgeawg

+0

これは助けてさらに編集を加えました...私が与えた情報(質問の終わりの編集を参照してください)から、私が望む出力が得られない理由を知ることができますか? –

答えて

0

テンプレートがng-repeatディレクティブでdayFilterを使用している:私はこのモジュールを作成した最初の答えに応じて予め

に感謝します。 、コントローラにフィルタをインスタンス$filterサービス使用する

app.filter("dayFilter",() => { 
    return function dayFilter(items, date) { 
     //filter code 
     return filteredItems; 
    }; 
}); 

:詳細について

$filter("dayFilter"); 

AngularJS Developer Guide -- Creating Custom FIlters

+0

$ scope.dayFilter = $ filter( "dayFilter"); $ scope.dayFilter(new Date()、 'date')の代わりに;? &app.filter(コントローラの構造のために..... .....など)をどのように適用するのか分かりません –

+0

おかげさま...あなたが見て私に知らせることができれば質問を編集しましたなぜ私はまだ間違っているのですか? –

関連する問題