使用ng-model更改AngularJS URL

时间:2015-12-19 23:54:18

标签: angularjs angularjs-routing ngroute

有没有办法用ng-model更改AngularJS网址?

method: "post",
data: {category: category},
var scotchApp = angular.module('scotchApp', ['ngRoute']);

scotchApp.controller('mainController', function($scope) {
    $scope.gettext = function (){
          
    };
});

当用户在搜索框中输入“myVal”时(实际上是带搜索值的gettext()函数),我需要将网址更改为此http://localhost/angulRoute/search=myVal

2 个答案:

答案 0 :(得分:1)

您可以在控制器中执行以下操作:

$scope.query = $location.search().q;

$scope.$watch('query', function(newValue) {
    $location.search('q', newValue);
});

您需要在控制器中注入$ location,并确保路由配置中包含:

reloadOnSearch: true

这会产生类似http://localhost/myRoute?q=myVal

的网址

注意:我还会在您的输入中添加ng-model-options =“{updateOn:'blur'}”,以防止在每次按键时更新URL。

示例

以下是如何执行此操作的工作示例:http://plnkr.co/edit/tphqPeJ0dO74Ux7WpXlU?p=preview

请注意,由于plnkr.co的工作方式,您不会在该网站的地址栏中看到网址更改。如果您下载代码并在本地运行,则URL将在地址栏中更新。

答案 1 :(得分:0)

您好我找到了一个javascript解决方案。

 $scope.gettext = function (search){
    window.history.pushState("object or string", "Title", "/angulRoute/search="+search);
};

<input type="text" class="form-control" ng-model="search" ng-change="gettext(search)" >为我工作。然而,任何人都有AngulerJs解决方案,欢迎他们:D