Javascript angularjs从工厂返回数组
我正在尝试重构我的angular应用程序。因此,我引入了一个service.js文件,其中包含一个factory服务。代码如下所示: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) {
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}
youfunctionbedragok
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文档。