0

我试图了解如何在以下情况下配置我的 angularJS 路由:

我们有一个搜索页面,我们根据提供的标签(1..n 个标签)显示搜索结果。我们希望用户能够解析输入以下网址,并且我们的系统可以进行搜索并显示相应的结果。

网址格式应为:

http://mywebsite.com/search/<term1>/<term2>/<termN>...所以它可能是不同数量的术语。

我正在研究提供的路线,但无法找到一种动态的方法。

我看到我可以放入 routeprovid:

.when('/search/:searchParams',...但是只有当我有一个术语时才处理...有没有配置它来接受尽可能多的术语?

4

3 回答 3

0

您可以尝试对您的 searchParams进行base64 处理:

.when('/search/:searchParams', {controller:'SearchCtrl'})

function SearchCtrl($routeParams, $location){
    //Assuming your params are an array like ['param1', 'param2', 'param3']
    //You could easily adapt this to base64 a JSON object
    function encodeParams(params){
        return window.btoa(params.join(';'));
    }

    function decodeParams(string){
        return window.atob(string).split(';');
    }

    var searchParams = decodeParams($routeParams.searchParams);

    scope.search = function(params){
        $location.path('/search/' + encodeParams(params));
    }
}
于 2013-07-12T05:34:58.247 回答
0

我的解决方案可能看起来不那么高兴,但它至少有效:

你可以安排你的路线

yoursite.com/term1Name/**:param1**/term2Name/**:param2**/term3Name/**:param3**

为了清楚起见,您可能会让您的路线看起来像 REST 路线。例如我想去一个服务列表:

www.yoursite.com/servises/

转到其中一项服务:

www.yoursite.com/servise/:id

如果我想查看一些服务细节,我会这样做:

www.yoursite.com/servise/:id/details

所以

www.yoursite.com/servise/:id/detail/:id
于 2013-08-02T06:02:03.787 回答
0

这对你有帮助吗?似乎支持动态路由,您也许可以将 :name 参数分开来做您想做的事情。

http://gregorypratt.github.io/AngularDynamicRouting/

于 2013-07-11T15:57:34.953 回答