角度指令中的位置没有改变

时间:2015-04-19 22:29:05

标签: javascript angularjs

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
    });

});

1 个答案:

答案 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');
            }