簡體   English   中英

angularjs從工廠返回數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM