我有一个模块app.posts
。此模块中的几个路由工作正常,但在此我尝试显示create post
表单:
.state('app.posts', {
abstract: true,
url: '/news',
template: '<div ui-view class="fade-in-right-big smooth"></div>'
})
.state('app.posts.show', {
url: '/{id}',
templateUrl: 'app/posts/show.html',
resolve: {
deps: ['uiLoad',
function( uiLoad ){
return uiLoad.load( [
'app/posts/show.controller.js'
]);
}]
}
})
.state('app.posts.create', {
url: '/create',
templateUrl: 'app/posts/create.html',
resolve: {
deps: ['uiLoad',
function( uiLoad ){
return uiLoad.load( [
'app/posts/create.controller.js'
]);
}]
}
})
问题在于,当我访问此页面时,它会从自定义服务进行api调用:
GET /api/v1/node/create
如果我删除create.controller.js
和app/posts/create.html
,我仍然会遇到相同的行为。它导航到正确的页面/news/create
,并以某种方式进行此api调用。
对服务进行一些调试,很明显被调用的方法是getPost()
。该服务定义为:
angular
.module('app.posts')
.service('Posts', Posts);
Posts.$inject = ['$http'];
function Posts($http) {
var service = {
getPosts: getPosts,
getPost: getPost,
addPost: addPost,
createPost: createPost,
deletePost: deletePost
};
return service;
/* ********************************
* Method: getPost
******************************** */
function getPost(id) {
var request = {
method: 'GET',
url: '../api/v1/node/' + id,
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
};
return $http(request)
.success(function(success){
return success;
console.log(success);
})
.error(function(error){
return error;
});
}
}
我无法弄清楚如何调用此服务。
答案 0 :(得分:0)
现在已经解决了。这与状态配置中的顺序有关。
/create
被解释为/{id}
并且正在调用show
路线。为了解决这个问题,我已经重新命令app.post.create
秒(app.post
以下)。
答案 1 :(得分:0)