2014-04-20 120 views
0

返回数据的“子集”我有这样的工厂:AngularJS:从工厂

(function(){ 

    var requestsFactory = function(){ 

     var requests = [ 
      {id: 1, title: 'First Request', status: 'In Progress'}, 
      {id: 2, title: 'Second Request', status: 'Closed'}, 
      {id: 3, title: 'Third Request', status: 'Waiting'}, 
      {id: 4, title: 'Fourth Request', status: 'Closed'}, 
      {id: 5, title: 'Fifth Request', status, 'In Progress'} 
     ]; 

     var factory = {}; 

     factory.getAllRequests = function(){ return requests; }; 
     /* THIS IS NEW */ 
     factory.getOpenRequests = function(){ 
      var open_requests = filter(requests.status, function(status){ 
      return status !== 'Closed'; 
      }); 
      return open_requests; 
     }; 
     /* END NEW */ 

     return factory; 
}; // end requestsFactory 

     return factory; 
    }; 

    angular.module('appITI').factory('requestsFactory', requestsFactory); 
}()); 

而这个控制器:

(function(){ 

    var UsersController = function($scope, usersFactory, requestsFactory){ 
     $scope.current_user = []; 
     $scope.requests = []; 
     $scope.open_requests = []; // NEW 

     $scope.prefs = 'false'; 

     function init(){ 
      $scope.current_user = usersFactory.getCurrentUser(); 
      $scope.requests = requestsFactory.getAllRequests(); 
      $scope.open_requests = requestsFactory.getOpenRequests(); //NEW 
     } 

     init(); 

    }; // end UsersController 

    UsersController.$inject = ['$scope', 'usersFactory', 'requestsFactory']; 

    angular.module('appITI').controller('UsersController', UsersController); 

}()); 

我需要一个方法添加到厂里让我能调用这样的事情在控制器:

$scope.open_requests = requestsFactory.requestsByStatus('In Progress'); 

我一直这样学习AngularJs这个周末我似乎不能图吸收输出我敢打赌的是简单的JavaScript。

新 我在模板中有这个,现在页面是白色的和破碎的。

<tr class="landing_data_row" data-ng-repeat="request in open_requests | filter:techFilter | orderBy:sortBy:reverse"> 

回答

1

向您的工厂添加新功能,并使用filter功能。

factory.getOpenRequests = function(){ 
    return requests.filter(function(el){ 
    return el.status !== 'Closed'; 
    }); 
}; 

更新 这里是一个工作Plunker你更新的问题。

+0

是Angular的“过滤器”吗?因为,如果是这样,我已经给用户一个文本框来过滤数据以轻松找到他们正在寻找的东西......它们会冲突吗? – jgravois

+0

不,标准的JavaScript功能。 – aludvigsen

+0

废话!我的大脑充满了AngularJS本周末的视频,书籍和课程,我几乎没用......谢谢! ...另一件事,我可以把switch语句放在那里,这样我就不必为Status上的每个调用重写一个函数了吗?状态选择是有限的7种可能性。 – jgravois