有没有办法用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
答案 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