我想基于Angular创建过滤范围。这是我的html输入:
<input type="range" min="100" max="2000"step="100"
data-ng-model="value" >
当我使用它时,它会过滤一些值并以ng-repeat显示:
<div data-ng-repeat="x in names | rangeFilter:'Cost':value ">
{{ x.Cost}}
</div>
这些是来自json的值:
{"records":[{"Name":"First","Cost":"500"},{"Name":"Second","Cost":"300"},{"Name":"Third","Cost":"700"}]}
我的过滤器:
angular.module('app.filter.range',[])
.filter('rangeFilter', function () {
return function (items, attr, min) {
var range = [];
for (var i=0, l=items.length; i<l; i++){
var item = items[i];
if(item[attr]>=min){
range.push(item);
}
}
return range;
};
});
它应该显示在范围输入栏中具有焦化值或等于值的记录。 它实际上适用于&#34; 1000&#34;值。当输入值为f.ex 400时,它显示第一和第三记录的成本。当大于700时,不显示任何记录,这是好的(导致第三个记录,最大的,是700)。但是当输入范围大于1000时,它会显示所有记录,尽管事实上它比记录中的成本值更大。问题是什么?感谢您提前解决方案:)
修改 还有一件事。 Json从服务器导入:
.controller('Ctrl',[
'$scope', '$http',
function($scope, $http){
$http.get(path)
.then(function (response) {
$scope.names = response.data;
}
);
当我将值直接放入控制器时,它可以工作:
$scope.names = [
{ Nazwa: 'First', Kwota: 500 },
{ Nazwa: 'Second', Kwota: 300 },
{ Nazwa: 'Third', Kwota: 700 }
];
你有什么想法吗? :)