我正在使用AngularJs 1.0.8开发搜索应用程序。
为了允许书签和共享链接,我想在浏览器的位置栏中表示搜索的当前状态。 网址可能如下所示
http://example.com/#!/search?s=“一些查询字词”& page = 2
所以应用程序必须做两件事:
我目前所做的事情(也许这是错误的做法)是:
配置routeProvider以防止浏览器在搜索参数更改时重新加载
...
$routeProvider.when('/search', {
templateUrl: 'app/search/view/List.html',
controller: 'listCtrl',
reloadOnSearch: false
});
...
当有人按下搜索按钮时获取搜索结果并设置位置(searchArray保存搜索参数)
...
$location.search(searchArray);
...
相应地更新搜索结果。
...
$scope.search_results=data;
...
为了恢复状态,我正在观看$ location.search()
...
$scope.$watch(function () { return $location.search() }, function (newVal) {/* evaluate params and fire query */ });
...
我的问题是,该位置总是会改变两次。我设法通过维护脏标志来克服这个问题。
由于我认为URL中的这种维护状态是一种流行的场景,我认为Angular必须有更好的方法。 谁能引导我走向正确的方向?