2017-01-20 4 views
0

Я искал форум для проблемы, подобной моей, но не имел никакой удачи. Однако я нашел решение, которое я собираюсь рассказать.Переменная 'pathname' Проблема с ngRoute

Моя проблема в том, когда я хочу изменить свой маршрут, он не направляет меня в нужное место. Например, мой URL-адрес - www.dnndev.me/Projects/Project#/dashboard. Я попытался создать несколько ссылок, как так:

// goes to www.dnndev.me#/tasks. 
<a ng-href="#/task"></a> 
// same as above however what's between my {{}} is rendered blank. 
<a ng-href="{{window.location.pathname}}#/task"></a> 

«window.location.pathname» обеспечивает недостающую часть моего URL, но это не будет оказывать. Я думал о хранении этого в переменной, но это не показалось мне очень угловатым.

Я пробовал использовать $ location, но у него нет свойства pathname. Я столкнулся с $ location.path («путь»), и он сделал то, что мне нужно. Однако я не хотел вводить каждому контроллеру службу определения местоположения $. Немного подумав, я придумал идею о создании функции на корневой системе $ в функции запуска приложений, и она делает то, что мне нужно.

# this is written in coffeescript 
run = ['$location', '$rootScope', ($location, $rootScope) -> 
    $rootScope.route = (path) -> 
     $location.path(path) 

//html 
<button ng-click="$root.route('task')"> 
</button> 

Причина, по которой это необходимо, потому что «путь» является переменной. Я работаю в структуре DNN, и этот модуль можно отбросить на любом пути, таком как «www.website.com/foo/bar#/dashboard».

Есть ли лучший способ это сделать?

Спасибо.

ответ

0

Вы можете использовать $ location.path для навигации по информации, которую вы предоставили.

$location.path('/task'); 

И эта/задача должна отображаться в вашей маршрутизации. Тебе не нужно ни о чем беспокоиться. Что-то вроде ниже,

$routeProvider.when('/task', { 
    templateUrl : "where you wish to navigate", // This should be replaced by your need 
    controller : "taskController" 
})