2014-12-11 3 views
0

У меня есть следующая настройка маршрутизации angularjs.Ошибка маршрутизации угловой ошибки внутри контроллера

app.js
.config(function($stateProvider, $urlRouterProvider){ 
    //some code 
    .state('app.edit', { 
    url: '/edit/:recipeId', 
    views: { 
     'menuContent': { 
     templateUrl: 'templates/recipes/edit.html', 
     controller: 'editRecipeCtrl' 
     } 
    } 
    //some code 
}); 
$urlRouterProvider.otherwise('/app/home'); 

Просмотреть

<a ng-click="editDemo()" href='#'>Edit</a> 

проблема, когда я нажимаю на ссылку, он оленья кожа перейти на страницу редактирования. (После не наблюдение)

  • Нет ошибок в консоли
  • Я могу видеть URL меняется в адресной строке, но он быстро откат на главной странице
  • Если я печатаю http://localhost/#/app/edit/1 в адресной строке, он работает
  • он вызывает метод editDemo().

controller.js
$scope.editDemo = function(){ 
    // options I tried 

    // $location.path('/edit/1'); 
    // $location.path('#/app/edit/1'); 
    // $location.path('edit/1'); 
    // $location.url('/edit/1'); 
    // $location.url('#/app/edit/1'); 
    // $location.url('edit/1'); 
    // location.href = '/#/app/edit/1'; 
} 

Любая помощь будет оценена.

+0

'$ location.path ('/ редактирование/1');' должен быть правильным, попробуйте передать '$ event' в' нг-click' обратного вызова и вызвать '$ event.preventDefault()' – Rasalom

+0

@Rasalom , спасибо за быстрый ответ, я обновил ссылку на div '

Edit
' и код на '$ location.path ('/ edit/1');', но все равно не работает – sameera207

ответ

2

Я предпочитаю (для предотвращения ошибок), чтобы использовать $ Государственной службы

$scope.editDemo = function(id) { 
    $state.go('app.edit', {recipeId: id}); 
} 
+1

благодарит много, что работает и больше 'угловых 'Кстати, я думаю :) – sameera207

2

У вас есть по крайней мере 2 способа здесь:

1) удалить href из <a> тега: <a ng-click="editDemo()">Edit</a> и в editDemo:

$scope.editDemo = function(){ 
    $location.path('/edit/1'); 
} 

2) работать с событием щелчка в editDemo:

<a ng-click="editDemo($event)" href='#'>Edit</a> 

$scope.editDemo = function($event){ 
    $event.preventDefault(); 
    $location.path('/edit/1'); 
} 
+0

aaand 3-й путь сказал @Ben Diamant;) – Rasalom

+0

спасибо @Rasalom, я изменил код на способ Бена и его работу сейчас. и я считаю, что он больше похож на «угловатый». Но еще раз спасибо :) – sameera207

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