AngularJS 应用中的乘法过滤器
Multiply filter in AngularJS app
我在 angularJS 应用程序中过滤数据时遇到问题。有代码:
<p>
<span>Lokalizacja: </span>
<select ng-model="location" class="form-control">
<option value="" disabled selected>Wybierz lokalizacje...</option>
<option value="Łepkowskiego D">Łepkowskiego D</option>
</select>
</p>
<p>
<span>Liczba pokoi: {{rooms}}</span>
<input type="range" ng-model="rooms" min="1" max="5">
</p>
<p>
<span>Piętro: {{floor}}</span>
<select ng-model="floor" class="form-control">
<option value="" disabled selected>Wybierz piętro</option>
<option value="Parter">Parter</option>
<option value="I">Piętro I</option>
<option value="II">Piętro II</option>
<option value="III">Piętro III</option>
<option value="IV">Piętro IV</option>
<option value="V">Piętro V</option>
<option value="VI">Piętro VI</option>
</select>
</p>
这是我的 ng-repeat:
<tr ng-repeat="flat in flats | filter: location | filter: floor | filter: rooms">
<td>{{flat.location}}</td>
<td>{{flat.floor}}</td>
<td>{{flat.surface}}</td>
<td>{{flat.rooms}}</td>
<td>{{flat.price}}</td>
</tr>
这里是控制器中的数据示例:
{
"location":"Łepkowskiego D",
"floor":"I",
"surface":55.70,
"rooms":3,
"price":6200
},
{
"location":"Łepkowskiego D",
"floor":"I",
"surface":52.18,
"rooms":3,
"price":6300
},
我的问题是如何做一个过滤器,例如我选择楼层:I,房间:2 并且在应用程序中将显示一楼和 2 个房间的所有记录,而不像这张照片:
my problem
最好的问候和抱歉我的英语。
只需在您的 ng-repeat 中使用这样的过滤器:
<tr ng-repeat="flat in flats | filter:{location:location, floor:floor, rooms:rooms}">
发生这种情况是因为您使用的是链接过滤器,而不是与它应该匹配的对象掩码进行比较。因此,您必须通过设置 filter:{ location: location, floor: floor, rooms: rooms }
之类的过滤器来为所有对象添加这组属性来实现它的掩码。此外,在第一时间你必须初始化你的 $scope.room
因为在第一次加载时它没有值,直到你改变它的值。
以下代码片段实现了过滤器依赖项并初始化了您的值。
angular.module('app', [])
.controller('myController', function ($scope) {
$scope.rooms = 3;
$scope.flats = [{
"location":"Łepkowskiego D",
"floor":"I",
"surface":55.70,
"rooms":3,
"price":6200
},
{
"location":"Łepkowskiego A",
"floor":"II",
"surface":52.18,
"rooms":4,
"price":6300
}];
});
angular.element(document).ready(function () {
angular.bootstrap(document, ['app']);
});
table{
border-collapse: collapse;
}
td,th{
padding:4px;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-controller="myController">
<p>
<span>Lokalizacja: </span>
<select ng-model="location" class="form-control">
<option value="" disabled selected>Wybierz lokalizacje...</option>
<option value="Łepkowskiego D">Łepkowskiego D</option>
</select>
</p>
<p>
<span>Liczba pokoi: {{rooms}}</span>
<input type="range" ng-model="rooms" min="1" max="5">
</p>
<p>
<span>Piętro: {{floor}}</span>
<select ng-model="floor" class="form-control">
<option value="" disabled selected>Wybierz piętro</option>
<option value="Parter">Parter</option>
<option value="I">Piętro I</option>
<option value="II">Piętro II</option>
<option value="III">Piętro III</option>
<option value="IV">Piętro IV</option>
<option value="V">Piętro V</option>
<option value="VI">Piętro VI</option>
</select>
</p>
<table border="1">
<tr>
<th>Location</th>
<th>Floor</th>
<th>Surface</th>
<th>Liczba pokoi</th>
<th>Price</th>
</tr>
<tr ng-repeat="flat in flats | filter:{ location:location, floor:floor, rooms:rooms }">
<td>{{flat.location}}</td>
<td>{{flat.floor}}</td>
<td>{{flat.surface}}</td>
<td>{{flat.rooms}}</td>
<td>{{flat.price}}</td>
</tr>
</table>
</div>
我在 angularJS 应用程序中过滤数据时遇到问题。有代码:
<p>
<span>Lokalizacja: </span>
<select ng-model="location" class="form-control">
<option value="" disabled selected>Wybierz lokalizacje...</option>
<option value="Łepkowskiego D">Łepkowskiego D</option>
</select>
</p>
<p>
<span>Liczba pokoi: {{rooms}}</span>
<input type="range" ng-model="rooms" min="1" max="5">
</p>
<p>
<span>Piętro: {{floor}}</span>
<select ng-model="floor" class="form-control">
<option value="" disabled selected>Wybierz piętro</option>
<option value="Parter">Parter</option>
<option value="I">Piętro I</option>
<option value="II">Piętro II</option>
<option value="III">Piętro III</option>
<option value="IV">Piętro IV</option>
<option value="V">Piętro V</option>
<option value="VI">Piętro VI</option>
</select>
</p>
这是我的 ng-repeat:
<tr ng-repeat="flat in flats | filter: location | filter: floor | filter: rooms">
<td>{{flat.location}}</td>
<td>{{flat.floor}}</td>
<td>{{flat.surface}}</td>
<td>{{flat.rooms}}</td>
<td>{{flat.price}}</td>
</tr>
这里是控制器中的数据示例:
{
"location":"Łepkowskiego D",
"floor":"I",
"surface":55.70,
"rooms":3,
"price":6200
},
{
"location":"Łepkowskiego D",
"floor":"I",
"surface":52.18,
"rooms":3,
"price":6300
},
我的问题是如何做一个过滤器,例如我选择楼层:I,房间:2 并且在应用程序中将显示一楼和 2 个房间的所有记录,而不像这张照片:
my problem
最好的问候和抱歉我的英语。
只需在您的 ng-repeat 中使用这样的过滤器:
<tr ng-repeat="flat in flats | filter:{location:location, floor:floor, rooms:rooms}">
发生这种情况是因为您使用的是链接过滤器,而不是与它应该匹配的对象掩码进行比较。因此,您必须通过设置 filter:{ location: location, floor: floor, rooms: rooms }
之类的过滤器来为所有对象添加这组属性来实现它的掩码。此外,在第一时间你必须初始化你的 $scope.room
因为在第一次加载时它没有值,直到你改变它的值。
以下代码片段实现了过滤器依赖项并初始化了您的值。
angular.module('app', [])
.controller('myController', function ($scope) {
$scope.rooms = 3;
$scope.flats = [{
"location":"Łepkowskiego D",
"floor":"I",
"surface":55.70,
"rooms":3,
"price":6200
},
{
"location":"Łepkowskiego A",
"floor":"II",
"surface":52.18,
"rooms":4,
"price":6300
}];
});
angular.element(document).ready(function () {
angular.bootstrap(document, ['app']);
});
table{
border-collapse: collapse;
}
td,th{
padding:4px;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-controller="myController">
<p>
<span>Lokalizacja: </span>
<select ng-model="location" class="form-control">
<option value="" disabled selected>Wybierz lokalizacje...</option>
<option value="Łepkowskiego D">Łepkowskiego D</option>
</select>
</p>
<p>
<span>Liczba pokoi: {{rooms}}</span>
<input type="range" ng-model="rooms" min="1" max="5">
</p>
<p>
<span>Piętro: {{floor}}</span>
<select ng-model="floor" class="form-control">
<option value="" disabled selected>Wybierz piętro</option>
<option value="Parter">Parter</option>
<option value="I">Piętro I</option>
<option value="II">Piętro II</option>
<option value="III">Piętro III</option>
<option value="IV">Piętro IV</option>
<option value="V">Piętro V</option>
<option value="VI">Piętro VI</option>
</select>
</p>
<table border="1">
<tr>
<th>Location</th>
<th>Floor</th>
<th>Surface</th>
<th>Liczba pokoi</th>
<th>Price</th>
</tr>
<tr ng-repeat="flat in flats | filter:{ location:location, floor:floor, rooms:rooms }">
<td>{{flat.location}}</td>
<td>{{flat.floor}}</td>
<td>{{flat.surface}}</td>
<td>{{flat.rooms}}</td>
<td>{{flat.price}}</td>
</tr>
</table>
</div>