search.directive('rootCategory', [
function () {
return {
restrict: 'A',
controller: ['$scope', '$location', function($scope, $location) {
$scope.setUrl = function() {
var searchParams = {
'rootCategory': 'test'
};
$location
.path('/')
.search(searchParams);
console.log('Url changed');
}
}],
link: function($scope, element, attrs) {
element.on('click', function() {
$scope.setUrl();
$scope.$apply();
});
}
}
}
])
当我使用此指令<a data-root-category="">...</a>
点击我的元素时,在我的控制台中获取信息:Url changed
,但我的网址没有更改。为什么?
我也有该位置的配置。也许这就是问题?
search.config(function ($interpolateProvider, $locationProvider, $routeProvider) {
$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('!');
$routeProvider.when('/', {
reloadOnSearch: false
});
});
答案 0 :(得分:0)
$ location.search需要2个参数而不是对象
$scope.setUrl = function() {
$location
.path('/')
.search('rootCategory', 'test');
console.log('Url changed');
}
编辑:文档为here
但经过快速测试后,可以使用像
这样的字符串$scope.setUrl = function() {
var searchParams = 'rootCategory=test';
$location
.path('/')
.search(searchParams);
console.log('Url changed');
}