在angularjs / Restangular中查询中的多个值

时间:2014-04-10 09:21:24

标签: javascript angularjs api 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 个答案:

答案 0 :(得分:0)

Angular不提供内置的“独特”过滤器。您可以使用angularUI unique filter来解决此问题。

<强> 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 DEMO