2015-05-19 65 views
0

我的觀點在更新/刪除/創建後沒有得到體現Angular JS CRUD更新不刷新

我的列表頁面是EmpList。我的更新頁面是EmpDetail。

這裏是我的控制器

$scope.UpdateEmp = function() { 
      var empl=$scope.Employee; 
      empFactory.empUpdate.update({ EmpID: $routeParams.EmpID, empval: empl }); 
      $location.path('/EmpList'); 

     }; 

這裏是我的服務

var resource = { 
     empUpdate: 
      $resource('../../Employee/PutEmployee/:EmpID', { EmpID: '@EmpID', empval: '@empl' }, { update: { method: 'PUT', isArray: true } }) 
    } 

    return resource; 

這裏是我的MVC控制器

[HttpPut] 
     public JsonResult PutEmployee(int id, Employee empval) 
     { 
      empval.EmpID = id; 
      int index = emp.GetEmployees().FindIndex(i => i.EmpID == empval.EmpID); 
      emp.GetEmployees().RemoveAt(index); 
      emp.GetEmployees().Add(empval); 
      return Json(emp.GetEmployees(), JsonRequestBehavior.AllowGet); 
     } 

MVC控制器獲取調用和數據得到正確更新,但它沒有反映在主頁

注意:在Emplist.html中,我將控制器映射到執行查詢部分以反映更改的位置。該URL根本不會重定向到EmpList。

$scope.Employees = empFactories.query(function() { 
    console.log($scope.Employees); 
}); 

回答

0

你要發送的數據,但不能使用回覆:

reply = empFactory.empUpdate.update({ EmpID: $routeParams.EmpID, empval: empl }); 

現在你可以回覆分配給您的$scope

+0

感謝布倫特。但是這裏的問題是更新存在於另一個控制器中,我的員工範圍在不同的頁面中。我不知道如何直接將此控制器的響應分配給其他頁面的視圖。我的另一個問題是,在我的代碼中,我將它重定向到它應該執行查詢的列表頁面,但爲什麼重定向沒有像預期的那樣發生,url也不會更改爲#/ Emplist,顯然查詢更新列表是還沒有執行 – TechQuery

+0

這聽起來像你沒有你的應用程序結構正確。當頁面加載時(從重定向或點擊鏈接),它加載該頁面的控制器並更新$ scope。你不應該在控制器之間傳遞東西。您可以做的最好的做法是在URL中傳遞查詢字符串,並在下一個控制器中解釋它們。 –

+0

我的主要列表頁面是EmpList,從那裏它重定向到我有更新按鈕的EmpDetail頁面。當我點擊更新時,EmpDetail中的控制器被觸發並將其重定向到EmpList。由於我有在EmpList中可用的視圖,我不知道如何在empDetail的控制器中使用$ scope來填充:( – TechQuery