Несколько значений в запросе в angularjs / Restangular
Я хочу фильтровать данные, получать данные из API, но это не работает, любое решение?
$scope.filter_all2 = function(value) {
$scope.filtered_inventories = new Inventory().query({model: value, manufacturer: value}).$object;
};
мой шаблон
<select ng-model="inventory.model" ng-change="filter_all2(inventory.model)">
<option value="">Model</option>
<option ng-repeat="inventory in inventories | unique:'model'" value="{{inventory.model}}">{{inventory.model}}</div>
</select>
<select ng-model="inventory.manufacturer" ng-change="filter_all2(inventory.manufacturer)">
<option value="">Manufacturer</option>
<option ng-repeat="inventory in inventories | unique:'manufacturer'" value="{{inventory.manufacturer}}">{{inventory.manufacturer}}</div>
</select>
РЕДАКТИРОВАТЬ:
Tastypie api, информация.
class InventoryResource(ModelResource):
assigned = fields.ForeignKey('bos_inventory.api.AssignedResource', 'assigned', full=True, null=True)
location = fields.ForeignKey('bos_inventory.api.LocationResource', 'location', full=True, null=True)
tags = fields.ToManyField(TagResource, 'tags', full=True, null=True)
class Meta:
queryset = Inventory.objects.all()
resource_name = 'inventory'
list_allowed_methods = ['get', 'put', 'post', 'delete', 'copy']
detail_allowed_methods = ['get', 'put', 'post', 'delete', 'copy']
authorization = DjangoAuthorization()
authorization = Authorization()
serializer = Serializer()
filtering = {'id': ALL, 'barcode': ALL, 'model': ALL, 'manufacturer': ALL, 'location': ALL, 'tags': ALL, 'assigned': ALL, 'inventory': ALL}
1 ответ
Angular не предоставляет встроенный "уникальный" фильтр. Вы можете использовать уникальный фильтр angularUI для решения этой проблемы.
app.js
angular.module("myApp",['ui.utils'])
.controller("myCtrl",function($scope){
//fake data
$scope.inventories = [{model:"a model",manufacturer:"a manufacturer"},{model:"a model",manufacturer:"b manufacturer"},{model:"b model",manufacturer:"b manufacturer"},{model:"b model",manufacturer:"a manufacturer"}];
$scope.filter_all = function(value){
alert(value);
//put ur RESTful service call here
}
});
app.html
<script src="http://angular-ui.github.io/ui-utils/dist/ui-utils.js"></script>
<div ng-controller="myCtrl">
{{inventory.model}}//{{inventory.manufacturer}}
<select ng-model="inventory.model" ng-change="filter_all(inventory.model)" ng-options="inventory.model as inventory.model for inventory in inventories | unique: 'model'">
<!--prompt option-->
<option value="">Model</option>
</select>
<select ng-model="inventory.manufacturer" ng-change="filter_all(inventory.manufacturer)" ng-options="inventory.manufacturer as inventory.manufacturer for inventory in inventories | unique: 'manufacturer'">
<option value="">Manufacturer</option>
</select>
</div>
Обратите внимание, что вместо использования ng-repeat для генерации динамических опций используйте ng-options, когда вы хотите, чтобы выбранная модель была привязана к нестроковому значению.
Вот JSFiddle ДЕМО