我使用RestAngular在AngularJS应用程序中使用以下控制器方法:
$scope.findFriend = function (name, type, limit) {
return FriendSearch.getList({
name: name,
type: type,
limit: limit
});
};
可能类型 为空(没有内容的字符串,长度= 0) - Restangular会生成以下无效网址:
http://host:port/rest/friends/search?limit=10&name=Peter&type=
正确就是省略它:
http://host:port/rest/friends/search?limit=10&name=Peter
当然,我可以在传递之前检查参数。但我想知道是否有更好的方法可以做到这一点。
答案 0 :(得分:0)
不幸的是我无法使用Restangular 1.4版重现此问题。我创造了一个类似于你的例子的小提琴:
http://plnkr.co/edit/ovwd8wUhBkhPXtBNDfbw?p=preview
摘录:
// http://run.plnkr.co/search?name=foo
$scope.findFriend('foo');
// http://run.plnkr.co/search?name=foo&type=bar
$scope.findFriend('foo', 'bar');
// http://run.plnkr.co/search?limit=3&name=foo
$scope.findFriend('foo', null, '3');
// http://run.plnkr.co/search?limit=3&name=foo
$scope.findFriend('foo', undefined, '3');
作为参数给出的null
和undefined
都按预期工作。
这意味着我们需要更多信息/代码,因为行为可能是由其他原因造成的。
对于空字符串的情况,最简洁和简单的方法是简单地检查''
并替换为null。
我相应更新了小提琴:
$scope.findFriend = function (name, type, limit) {
return FriendSearch.getList({
name: name === '' ? null : name,
type: type === '' ? null : type,
limit: limit === '' ? null : limit
});
};
// http://run.plnkr.co/search?limit=3&name=foo
$scope.findFriend('foo', '', '3');