[英]angularjs return array from factory
我正在尝试重构我的角度应用程序。 因此,我介绍了一个包括工厂服务的service.js文件。 代码是这样的:
app.factory('Categorien', function() {
var Categorien = {
populate: function () {
var _categorien = [];
var bedragok = (function bedragOk(categorie) {
return categorie.bedragAf > 0;
});
var categorienFilter = $scope.categorien.filter(bedragok);
categorienFilter.forEach(function(item) {
var dataArray = [];
dataArray.push(item.omschrijving);
dataArray.push(item.bedragAf);
_categorien.push(dataArray);
});
return _categorien;
}
};
return Categorien;
});
在控制器中,我称其为:
$scope.dataTable = Categorien.populate();
因此,dataTable期望一个数组,该数组应填充函数。
我做错了,所以希望您能帮帮我。
谢谢!
我认为如果只想进行过滤,则可以使用自定义过滤器。 然后您的代码可能类似于下面的演示。
如果您想使用工厂,则可以将数组传递给填充函数,例如$scope.dataTable = Categorien.populate(['your', 'array', 'here']);
或者您可以使用其他方法将数据添加到工厂。 如注释中所述,不应将$scope
传递给工厂。
以下演示(或在该小提琴中 )展示了如何使用自定义过滤器:
angular.module('demoApp', []) .controller('MainController', MainController) .filter('categoryFilter', function() { return function(input) { var _categorien = []; var bedragok = (function bedragOk(categorie) { return categorie.bedragAf > 0; }); var categorienFilter = input.filter(bedragok); categorienFilter.forEach(function(item) { var dataArray = []; dataArray.push(item.omschrijving); dataArray.push(item.bedragAf); _categorien.push(dataArray); }); return _categorien; } }); function MainController() { this.data = [ { bedragAf: 100, omschrijving: 'test' }, { bedragAf: -100, omschrijving: 'test neg. value' }, { bedragAf: 100, omschrijving: 'test2' } ]; }
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="demoApp" ng-controller="MainController as ctrl"> <pre> raw: {{ctrl.data | json : 2}} filtered: {{ctrl.data | categoryFilter | json : 2}} </pre> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.