2015-05-19 49 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