我正在编写一个小型测试应用程序,我可以从parse.com数据库中检索我的客户。
我在html中有以下表格
...
<body ng-app="myApp">
<div ng-controller="CustomerController">
<button ng-click="getCustomers()">Get customers</button>
<ul>
<li ng-repeat="customer in customers">{{ customer.name }}</li>
</ul>
</div>
</body>
...
我的角度应用程序如下:
模块
var app = angular
.module('myApp', ['ngResource'])
.constant('myConfig', {
'api_url': 'https://api.parse.com/1/classes/',
'parse_application_id': 'xxxxxxxxxxxxx',
'parse_rest_api_key': 'xxxxxxxxxxxxx'
});
厂
app.factory('CustomersService', function($resource, myConfig) {
return $resource(myConfig.api_url + 'Customer', {}, {
query: {
method: 'GET',
isArray: false,
headers: {
'X-Parse-Application-Id': myConfig.parse_application_id,
'X-Parse-REST-API-Key': myConfig.parse_rest_api_key
}
},
create: {
method: 'POST',
headers: {
'X-Parse-Application-Id': myConfig.parse_application_id,
'X-Parse-REST-API-Key': myConfig.parse_rest_api_key
}
}
})
});
控制器:
app.controller('CustomerController', function($scope, CustomersService, CustomerService) {
$scope.getCustomers = function() {
CustomersService.query().$promise.then(function(result) {
$scope.customers = result.results;
});
};
});
所以当我点击我的按钮时,一切都按照它应该的方式工作。 但是,当我想从数据库中检索客户时,我还想按名称添加过滤器。 当我在Postman中执行以下内容时
https://api.parse.com/1/classes/Customer?where={"name":"aaaaa"}
这种方法有效,只能获得名为“aaaaa”的客户。所以我知道语法没问题。
因此,我将添加一个文本框,用户可以在其中输入客户名,之后我想点击搜索按钮。 但是,当我点击按钮时,如何将?where = {“name”:“aaaaa”} 管理为角度内容?我还希望使用该客户的其他列扩展过滤器。
答案 0 :(得分:1)
这样的事情应该有效(假设一切都在where
对象中)
添加一些绑定到范围对象属性的搜索字段。我们称之为search
<label for="search_name">Name</label>
<input type="text" ng-model="search.name" name="name" id="search_name">
<label for="search_city">City</label>
<input type="text" ng-model="search.city" name="city" id="search_city">
然后您可以使用
执行查询操作CustomersService.query({where: $scope.search}).$promise...
那应该创建一个像
这样的查询参数?where=%7B%22name%22%3A%22aaaaa%22%2C%22city%22%3A%22London%22%7D
是URI编码值
?where={"name":"aaaaa","city":"London"}