Angularjs:如何在URL中表示状态并从URL获取状态?

时间:2013-10-21 14:44:21

标签: angularjs

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

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

  

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

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

  1. 在有人搜索时更新网址
  2. 当另一个打开相同的网址时恢复状态
  3. 我目前所做的事情(也许这是错误的做法)是:

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

0 个答案:

没有答案