我需要在成功发布后更新我的表而不重新加载页面。我有一个成功的Put工作,但我不能让它与邮政工作。 作品
//Update Job
$scope.updateJob = function (job) {
jobFactory.updateJob(job)
.success(successCallback)
.error(errorCallback);
console.log(job);
$scope.cancelEditJobModal();
$scope.$evalAsync(function () {
$scope.job;
});
};
不起作用
//Post New Job
$scope.submitJob = function () {
var data = {
JobId: $scope.newItems.JobId,
JobNumber: $scope.newItems.JobNumber,
JobName: $scope.newItems.JobName,
JobDescription: $scope.newItems.JobDescription,
}
$http.post('/api/apiJob/PostNewJob', data).success(function (data, status, headers) {
console.log(data);
$scope.cancelNewJobModal();
$scope.$evalAsync(function () {
$scope.data;
});
});
};
答案 0 :(得分:1)
根据你的写作,目前尚不清楚你想要达到的目标。
我从您的代码中看到,您正在发布一份工作来保存它。首先,服务器是否正确保存,响应是什么(例如成功处理程序中的数据)?然后,如果您的作用域中有一系列作业,则必须手动将新项目推送到该数组。
所以要给出一个提示,这是你的代码片段,经过修改以将新作业推送到集合中:
//Post New Job
$scope.submitJob = function () {
var data = {
JobId: $scope.newItems.JobId,
JobNumber: $scope.newItems.JobNumber,
JobName: $scope.newItems.JobName,
JobDescription: $scope.newItems.JobDescription,
};
$http.post('/api/apiJob/PostNewJob', data)
.success(function (data, status, headers) {
// Clone newItem, newItem is a reference
var tmpNewItem = angular.copy($scope.newItem);
// This assumes you have $scope.jobslist as your collection
// Now we can attach cloned newItem to collection
$scope.jobslist.push(tmpNewItem)
// Reset newItem, no need for $apply like this
angular.copy({}, $scope.newItem);
$scope.cancelNewJobModal();
});
};
我设置了一个快速示例,用于推送新项目(不含$ http)http://jsfiddle.net/yy3mrh34/3/
此外,在您的代码示例中,更新似乎有效,因为双向数据绑定。 Angular正在立即更改值,并且不依赖于服务器来正确保存。