2014-10-08 35 views
0

我需要在成功發佈後更新我的表格而不重新加載頁面。我有一個成功的Put的工作,但我無法讓它與Post一起工作。 作品

//Update Job 
$scope.updateJob = function (job) { 
    jobFactory.updateJob(job) 
     .success(successCallback) 
     .error(errorCallback); 
    console.log(job); 
    $scope.cancelEditJobModal(); 
    $scope.$evalAsync(function() { 
     $scope.job; 
    }); 
}; 

Doesnt't工作

//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

爲什麼你需要$ evalAsync? – coma 2014-10-13 22:05:53

+0

我不知道該怎麼做,我認爲我需要使用$ apply或$ digest,但是在閱讀之後對我們說$ evalAsync。我不知道該找什麼。在我剛使用windowreload之前,但我希望某些內容不會重新加載整個頁面 – texas697 2014-10-13 22:14:07

+0

等待,由於使用$ http進行調用,因此我沒有看到使用任何摘要觸發器的必要性,所以響應應該已經與消化週期。我想知道這個問題是否隱藏在其他地方。 – coma 2014-10-13 22:19:45

回答

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正在立即更改這些值,並且不依賴於服務器來正確保存。

+0

完美。謝謝 – texas697 2014-10-14 22:36:51