Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs从工厂返回数组_Javascript_Arrays_Angularjs_Factory - Fatal编程技术网

Javascript angularjs从工厂返回数组

Javascript angularjs从工厂返回数组,javascript,arrays,angularjs,factory,Javascript,Arrays,Angularjs,Factory,我正在尝试重构我的angular应用程序。因此,我引入了一个service.js文件,其中包含一个factory服务。代码如下所示: app.factory('Categorien', function() { var Categorien = { populate: function () { var _categorien = []; var bedragok = (function bedragOk(categorie) {

我正在尝试重构我的angular应用程序。因此,我引入了一个service.js文件,其中包含一个factory服务。代码如下所示:

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需要一个数组,函数populate应该返回该数组

我做错了什么,希望你能帮我


谢谢

如果您只想进行过滤,我想您可以使用自定义过滤器。然后,您的代码可能会像下面的演示一样

如果您想使用工厂,可以将数组传递给您的填充函数,如
$scope.dataTable=categilen.populate(['your','array','here'])
或者您可以使用其他方法将数据添加到工厂。如注释
$scope
中所述,不应将其传递给工厂

以下演示(或在此演示中)显示了如何使用自定义筛选器:

angular.module('demoApp',[])
.controller('MainController',MainController)
.filter('categoryFilter',function(){
返回函数(输入){
变量_categorien=[];
变量bedragok=(功能bedragok(分类){
返回categorie.bedragAf>0;
});
变量categorienFilter=input.filter(bedragok);
categorienFilter.forEach(函数(项){
var dataArray=[];
dataArray.push(item.omschrijving);
dataArray.push(item.bedragAf);
_分类推送(数据阵列);
});
返回分类;
}
});
函数MainController(){
此参数。数据=[
{
贝德拉加夫:100,
OMSChrijing:“测试”
},
{
床单:-100,
OMSChrijing:'测试负值'
},
{
贝德拉加夫:100,
OMSChrijing:'test2'
}
];        
}

原始:
{{ctrl.data | json:2}
过滤:
{{ctrl.data | categoryFilter | json:2}

youfunction
bedragok
fn应该是
var bedragok=function bedragok(categie){return categorie.bedragAf>0;}Angular中的工厂/服务不像控制器那样与
$scope
关联。执行此操作时,您应该会收到一个错误:
var categorienFilter=$scope.categorien.filter(bedragok)b/c未定义$scope。在你的问题中,你并没有真正描述什么不起作用。在angularjs中,工厂和服务都是单例服务。但是,
$scope
-作用域可以有多个实例。因此,您不应该在任何服务/工厂中包含
$scope
。有关更多详细信息,请参阅“”-AngularJS文档。