2015-05-03 2 views
-2

Я хочу, чтобы AngularJS менял путь без перезагрузки, мой пользовательский случай должен изменить URL-адрес, содержащий некоторый идентификатор, чтобы пользователь мог разделить/отправить этот URL друзьям. Я посмотрел AngularJS UI Router - change url without reloading stateAngularJS: как вызвать функцию в сервисе?

в core.js:

'use strict'; 
angular.module('App', ['ngRoute']) 
    .service('$locationEx', ['$location', '$route', '$rootScope', 
    function($location, $route, $rootScope) { 
     $location.skipReload = function() { 
     var lastRoute = $route.current; 
     var un = $rootScope.$on('$locationChangeSuccess', function() { 
      $route.current = lastRoute; 
      un(); 
     }); 
     return $location; 
     }; 
     return $location; 
    } 
    ]); 

В контроллере:

angular.module('App') 
    .controller('DetailController', ['$scope', '$locationEx', 
     function($scope, $locationEx) { 
     $scope.changeURL = function() { 
      console.log("IN changeURL"); 
      $locationEx.skipReload().path("sdfasdfasdfsadf").replace(); 
     }; 

Если вызвать changeURL, это будет происходить ошибка: TypeError: $locationEx.skipReload is not a function

Может кто-нибудь мне помочь? Благодаря!

+0

Что такое прецедент? Может быть, все, что вам нужно, это состояние модели данных, хранящееся в службе, и просто увеличивать объем с ним. – charlietfl

+0

привет, я хочу вызвать $ locationEx.skipReload(). Path ("sdfasdfasdfsadf"). Replace(); для изменения URL-адреса без перезагрузки страницы, я нашел решение в [link] (http://stackoverflow.com/questions/23585065/angularjs-ui-router-change-url-without-reloading-state), но возникает ошибка , – UNSTABLE

+0

это не объясняет использование кейс .. это хорошо может быть проблема [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – charlietfl

ответ

0

Я считаю, что для службы вы должны использовать «это» при назначении свойств внутри службы. Таким образом, вместо того, чтобы ваша служба будет выглядеть следующим образом:

'use strict'; 
angular.module('App', ['ngRoute']) 
    .service('$locationEx', ['$route', '$rootScope', 
    function($route, $rootScope) { 
     this.skipReload = function() { 
     var lastRoute = $route.current; 
     var un = $rootScope.$on('$locationChangeSuccess', function() { 
      $route.current = lastRoute; 
      un(); 
     }); 
     }; 
    } 
    ]); 

Не похоже, вам нужно обслуживание $ местоположения, но я мог бы быть недоразумение основано на том, как вы сформулирован вопрос.

Смежные вопросы