1

我正在使用 AngularJs 1.0.8 开发搜索应用程序。

为了允许书签和共享链接,我想在浏览器的地址栏中表示搜索的当前状态。URL 可能如下所示

http://example.com/#!/search?s= "一些查询词"&page=2

所以应用程序必须做两件事:

  1. 有人搜索时更新 URL
  2. 当另一个人打开相同的 URL 时恢复状态

我目前所做的(也许这是错误的方法)是:

配置 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 必须有更好的方法。谁能引导我走向正确的方向?

4

0 回答 0