2014-05-19 5 views
0

내가 요소의 목록을 표시 ngTable (AngularJS와)를 사용하고 있지만, 컴파일 할 때 오류가 발생하는 :오류 ngTable AngularJS와

************ I am OK ******************

articles.client.controller.js를 : 12 ReferenceError가가 : 기사입니다 (...../modules/articles/controllers articles.client.controller.js : 27 : 16)

이것은 내 코드 : myApp/public/modules/articles/controllers 기사입니다. client.controller.js

'use strict'; 

angular.module('articles').controller('ArticlesController', ['$scope', '$stateParams', '$location', 
    'Authentication', 'Articles', 
    function($scope, $filter, ngTableParams, $stateParams, $location, Authentication, Articles){ 

     $scope.authentication = Authentication; 
     $scope.find = function() { 
      $scope.articles = Articles.query(); 
     }; 

     console.log('************ I am OK ******************'); 

     /* jshint ignore:start */ 

     $scope.tableParams = new ngTableParams({ 

      page: 1,   // show first page 
      count: 10,   // count per page 
      filter: { 
       title: ''  // initial filter 
      }, 
      sorting: { 
       title: 'asc'  // initial sorting 
      } 
     }, { 
      total: articles.length, // length of data 
      getData: function($defer, params) { 
       // use build-in angular filter 
       var filteredData = params.filter() ? 
        $filter('filter')(articles, params.filter()) : 
        articles; 
       var orderedData = params.sorting() ? 
        $filter('orderBy')(filteredData, params.orderBy()) : 
        articles; 

       params.total(orderedData.length); // set total for recalc pagination 
       $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count())); 
      } 
     }); 
     /* jshint ignore:end */ 

     $scope.create = function() { 
      var article = new Articles({ 
       title: this.title, 
       content: this.content 
      }); 
      article.$save(function(response) { 
       $location.path('articles/' + response._id); 
      }, function(errorResponse) { 
       $scope.error = errorResponse.data.message; 
      }); 

      this.title = ''; 
      this.content = ''; 
     }; 

     $scope.remove = function(article) { 
      if (article) { 
       article.$remove(); 

       for (var i in $scope.articles) { 
        if ($scope.articles[i] === article) { 
         $scope.articles.splice(i, 1); 
        } 
       } 
      } else { 
       $scope.article.$remove(function() { 
        $location.path('articles'); 
       }); 
      } 
     }; 

     $scope.update = function() { 
      var article = $scope.article; 

      article.$update(function() { 
       $location.path('articles/' + article._id); 
      }, function(errorResponse) { 
       $scope.error = errorResponse.data.message; 
      }); 
     }; 
    } 
]); 

도움을 주셔서 감사합니다. 인터프리터가 당신에게 어디에 그것은 당신의 문제처럼 보인다

답변

0

은이었다 : 당신이 당신의 ngTable를 만들 때 $ scope.articles이 존재하지 않는

total: articles.length, // length of data 

은 물론

total: $scope.articles.length, // length of data 

이어야한다 params이므로 적절한 시간에 값을 설정하는 방법을 찾아야합니다 (아마도 getData 메소드에서).

0

심지어 당신의 $scope.articles 당신이 $scope.find 메소드를 호출 할 때까지 그래서 첫째로 당신은 $scope.articles variable의 인스턴스 또는 당신이 $scope.tableParams = new ngTableParams({ })를 선언하기도 전에 $scope.find() 전화를 작성해야합니다, 사용할 수 없습니다. 이것은 효과가있다.

그러나 더 나은 코드, 방법에 $scope.tableParams = new ngTableParams({ }) 포장 및 전화 ng-init를 사용 $scope.find()