我有以下angularjs
路由设置。
.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>
问题是当我点击链接时,它不会进入编辑页面。 (以下是观察结果)
http://localhost/#/app/edit/1
,则可以editDemo()
方法。 $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 :(得分:2)
我更喜欢(防止陷阱)使用$ state服务
$scope.editDemo = function(id) {
$state.go('app.edit', {recipeId: id});
}
答案 1 :(得分:2)
这里至少有两种方式:
1)从href
代码中移除<a>
:<a ng-click="editDemo()">Edit</a>
并在editDemo中:
$scope.editDemo = function(){
$location.path( '/edit/1' );
}
2)使用editDemo中的click事件:
<a ng-click="editDemo($event)" href='#'>Edit</a>
$scope.editDemo = function($event){
$event.preventDefault();
$location.path( '/edit/1' );
}