首先,我要提一下,我是AngularJS和编程的新手。 我的情况如下:
我正在处理从SQL数据库提取的5万多个条目。
在对这些条目进行搜索/过滤后,我必须在Web平台上显示这些条目。
因此,我对此进行了一些研究,得出结论认为要走的路是: SQL> PHP> JSON> ANGULARJS。 我把所有这些都记下来了,问题是ng-repeat将所有内容发送到浏览器,我想要的是过滤结果,然后用ng-repeat打印它们。
我试图实现某种过滤器,但似乎无法解决。
代码如下:
js:
var app = angular.module('myApp' ,[]);
app.controller('MainCtrl', function($scope, $http)
{
$http.get("http:source.php")
.then(function(response)
{
$scope.materiale = response.data.records;
});
});
app.filter('filtruCautare', function () {
return function (items, filtru) {
var filtered = [];
var filtruMatch = new RegExp(filtru, 'i');
for (var i = 0; i < items.length; i++) {
var item = items[i];
if (filtruMatch.test(item.MATKL) || filtruMatch.test(item.MAKTX)) {
filtered.push(item);
} else if (filtruMatch.test(item.MATNR)) {
filtered.push(item);
}
}
return filtered;
};
});
html:
<input ng-model='filtru' type="text" placeholder="...">
<tbody ng-repeat="material in materiale | filtruCautare:filtru">
我从几个博客,Stackoverflow帖子/问题以及其他几个来源中整理了这些信息……
我认为我需要以某种方式过滤50k条目,将它们存储在作用域中,然后使用ng-repeat从那里打印结果,只是我在创建从过滤器中提取信息的作用域时遇到了麻烦
感谢您的帮助!
答案 0 :(得分:1)
如果未定义搜索过滤器(或为空字符串),只需更改过滤器即可返回空数组。
通过这种方式,只有在开始过滤时,您才会开始看到结果:
app.filter('filtruCautare', function () {
return function (items, filtru) {
if (!filtru) {
return [];
}
var filtered = [];
var filtruMatch = new RegExp(filtru, 'i');
for (var i = 0; i < items.length; i++) {
var item = items[i];
if (filtruMatch.test(item.MATKL) || filtruMatch.test(item.MAKTX)) {
filtered.push(item);
} else if (filtruMatch.test(item.MATNR)) {
filtered.push(item);
}
}
return filtered;
};
});