我的目标是:
首先使用http post插入新的数据库记录,使用stateProvider解析并获取新的id并更改view和stateParams。
我有这个代码用于我的http post服务
myApp.service('postService', ['$http', function($http) {
this.insertNew = function() {
$http.post('create_new.php')
.success(function(data) {
return data;
});
};
create_new.php返回这样的ID(它有效,用控制台证明)
return json_encode($data);
并且stateProvider看起来像这样(部分)
$stateProvider
.state('newRecord', {
resolve: {
newArtID: ['postService',
function(postService) {
return postService.insertNew();
}]
},
params: {
artID: <-- new ID from DB
},
我在serval变种中使用stateParams进行了测试(在解析和params中)。如何将新ID带到stateParams,以便我可以从视图中访问?
感谢您的帮助!
答案 0 :(得分:0)
我不确定你的操作是否正确。 params
适用于已拥有该数据的情况。您应该从您的解析中返回数据,然后您可以在您的范围内访问它,例如:
服务:
.service('postService', function ($http) {
this.insertNew = function () {
return $http.post('create_new.php').then(function (data) {
return data;
});
}
})
路线:
$stateProvider
.state('newRecord', {
views: {
"main": {
controller: 'SomeCtrl',
templateUrl: '...'
}
},
resolvedId: {
newArtID: function (postService) {
return postService.insertNew().then(function (response) {
return response;
});
}
}
})
控制器:
.controller('SomeCtrl', function (resolvedId) {
var newID = resolvedId.id; //depending on what is returned
});