我想过滤数据,从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}
答案 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。