Ajax 如何在使用$evalAsync成功发布后刷新表

Ajax 如何在使用$evalAsync成功发布后刷新表,ajax,angularjs,Ajax,Angularjs,我需要在发布成功后更新我的表,而无需重新加载页面。我有一个成功的推杆工作,但我不能让它与邮政工作。 工作 不起作用 //Post New Job $scope.submitJob = function () { var data = { JobId: $scope.newItems.JobId, JobNumber: $scope.newItems.JobNumber, JobName: $scope.newItems.JobName,

我需要在发布成功后更新我的表,而无需重新加载页面。我有一个成功的推杆工作,但我不能让它与邮政工作。 工作

不起作用

//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;
        });
    });
};

从你写的内容来看,不清楚你想要实现什么

我从你的代码中看到,你正在发布一个作业来保存它。首先,服务器是否正确保存,响应是什么(例如,成功处理程序中的数据)?然后,如果您的作用域中有一个作业数组,则必须手动将新项推送到该数组中

因此,为了给出一个提示,下面是您的代码片段,经过修改以将新作业推送到集合:

//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)的快速示例


另外,在您的代码示例中,由于双向数据绑定,更新似乎可以工作。Angular正在立即更改值,并且不依赖服务器正确保存。

为什么需要$evalAsync?我不确定如何执行此操作,我想我需要使用$apply或$digest,但在阅读后对us$evalAsync说。我不知道该找什么。在我只是使用windowreload之前,我想要的是不重新加载整个页面的东西等等,我不认为需要使用任何摘要触发器,因为调用是使用$http进行的,响应应该已经与摘要周期同步。我想知道这个问题是否隐藏在其他地方。你的意思是将
$scope.data
设置为某个值吗?不,我只是插入一些东西看看它做了什么
//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();
        });
};