2017-02-10 27 views
0

我剛回到Angular,我很茫然。我正在利用我在之前的項目中使用過的datagrid指令,我試圖做的就是讓它顯示簡單的數據。

下面是一個使用我的電話模塊是:

define([ 
    'angular', 
    'components/home/home-controller', 
    '../../../js/px-datagrid' 
], function (angular, homeController, pxDatagridDirective) { 
    'use strict'; 
    var homeModule = angular.module('app.home', ['ui.grid']); 
    homeModule.controller('home', ['$scope','$timeout','$log','$http','$filter',homeController]); 
    homeModule.directive('pxDatagrid', [ '$log','$filter',pxDatagridDirective ]); 
}); 

這裏是PX-datagrid.js的關鍵部分:

define(['angular', 'text!./px-datagrid.tmpl', 'angular-ui-bootstrap', 
     'angular-sanitize'], 
     function(angular, tmpl, angularBootstrap) { 
      return function($log, $filter){ 
       var PxDatagrid = { 
        ... 
        applyFilters: function($scope, $log, $filter){ 
         if($scope.tableData && ($scope.tableData.$resolved || $scope.tableData.length > 0)){ 
          var filtered = $filter('filter')($scope.tableData, $scope.searchText); 
          filtered = $filter('orderBy')(filtered, $scope.sortBy, $scope.sortOrder === 'desc'); 
          //removes dependency on startFrom filter 
          filtered = filtered.slice(($scope.currentPage - 1) * $scope.itemsPerPage); 
          $scope.filtered = $filter('limitTo')(filtered, $scope.itemsPerPage); 
         } else { 
          $scope.filtered = null; 
         } 
        } 
        ... 
       } 
      } 
     } 

不管我做什麼,我得到以下錯誤在applyFilters

TypeError: $filter is not a function

這似乎有相同的依賴注射,相同的結構,與之前一樣(我們可以在其中找到它的所有功能)。我可以找到的所有信息只是說注入它,它的工作原理...一定有一些簡單的我錯過了。

回答

0

試試這個

define(['angular', 'text!./px-datagrid.tmpl', 'angular-ui-bootstrap', 
     'angular-sanitize','$filter'], 
     function(angular, tmpl, angularBootstrapm, sanitize, $filter) { 
      return function($log, $filter){ 
       var PxDatagrid = { 
        ... 
        applyFilters: function($scope, $log){ 
         if($scope.tableData && ($scope.tableData.$resolved || $scope.tableData.length > 0)){ 
          var filtered = $filter('filter')($scope.tableData, $scope.searchText); 
          filtered = $filter('orderBy')(filtered, $scope.sortBy, $scope.sortOrder === 'desc'); 
          //removes dependency on startFrom filter 
          filtered = filtered.slice(($scope.currentPage - 1) * $scope.itemsPerPage); 
          $scope.filtered = $filter('limitTo')(filtered, $scope.itemsPerPage); 
         } else { 
          $scope.filtered = null; 
         } 
        } 
        ... 
       } 
      } 
     } 
+0

感謝您的答覆! 當我嘗試此操作時,出現「$ filter.js:1」的「Uncaught SyntaxError:Unexpected token <」。看起來它正在尋找該文件並且它不存在。 有沒有其他想法? – brettvd

+0

從定義塊中刪除'$ filter'並僅添加'function(angular,tmpl,angularBootstrapm,sanitize,$ filter)' –

+0

這樣做我仍然得到「$ filter不是函數」的錯誤... 我做了請注意,我在控制檯中也看到如下錯誤: 「錯誤:[$ injector:unpr] http://errors.angularjs.org/1.5.8/$injector/unpr?p0=%24modalProvider%20 %3C-%20%24modal%20%3C-%20PlmiCardBanner%20%3C-%20PlmiCardListBanner「 我讀了一下,但我似乎無法找出其他可能導致此問題的東西。我猜它不能解決'$過濾',但我不知道爲什麼... – brettvd

相關問題