Несколько значений в запросе в 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 ДЕМО

Другие вопросы по тегам