Javascript AngularJS中的搜索表单和URL参数

Javascript AngularJS中的搜索表单和URL参数,javascript,angularjs,Javascript,Angularjs,我有一个带有多个可选字段的搜索,我觉得我在过去没有正确处理这个问题,我想知道如何正确处理这个问题,以便在用户浏览搜索表单后刷新页面时重新加载结果 我有一个表单,人们可以使用它来搜索客户,我的用户可以通过类型,姓名,账号 类型是必填字段 名称和账号是可选字段 我可以使用$routeProvider配置我的路由,例如: .when('/clientSearch/:type/:accountNumber?/:name?', { 但是,如果帐号和名称是可选的,我如何区分这两个帐号中是否只有一个传入?某

我有一个带有多个可选字段的搜索,我觉得我在过去没有正确处理这个问题,我想知道如何正确处理这个问题,以便在用户浏览搜索表单后刷新页面时重新加载结果

我有一个表单,人们可以使用它来搜索客户,我的用户可以通过类型姓名账号

类型是必填字段

名称账号是可选字段

我可以使用
$routeProvider
配置我的路由,例如:

.when('/clientSearch/:type/:accountNumber?/:name?', {
但是,如果帐号名称是可选的,我如何区分这两个帐号中是否只有一个传入?某些表单具有多个可选的数字/字符串字段

使用
$location.search()
我可以设置URL参数,如:

$location.search( {type: type, accountNumber: accountNumber, 'name': name} )
哪一种方法是首选的,这是错误的


如果刷新页面,如何正确处理搜索表单并允许再次获取相同的结果?

通常使用查询参数。在角度上,它们被称为
search
params:

这样使用:

// http://example.com/#/some/path?foo=bar&baz=xoxo

// To get:
$location.search()  // => {foo: 'bar', baz: 'xoxo'}

// To set:
$location.search('foo', 'yipee') // => {foo: 'yipee', baz: 'xoxo'}
关于你的问题:

哪一种方法是首选的,这是错误的

首选方法肯定是使用查询/搜索参数

如何正确处理搜索表单,并允许在刷新页面时再次获取相同的结果

获取参数并定义控制器中需要的任何内容。如果需要视图可用的参数,可以执行以下操作:

$scope.searchParams = $location.search()

它们应该是查询参数。注意不要混淆
$location.search()
和本机
location.searchParams
(又称“查询字符串参数”),因为这是两个不同的东西
$location.search()
location.hash
的一部分有关,而
location.searchParams
是从
location.search
(查询字符串)解析的值。重要的是,更改
散列
不会像更改查询字符串那样重新加载页面。