Angular JS CRUD更新不刷新
问题描述:
我的观点在更新/删除/创建后没有得到体现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);
});
答
你要发送的数据,但不能使用回复:
reply = empFactory.empUpdate.update({ EmpID: $routeParams.EmpID, empval: empl });
现在你可以回复分配给您的$scope
感谢布伦特。但是这里的问题是更新存在于另一个控制器中,我的员工范围在不同的页面中。我不知道如何直接将此控制器的响应分配给其他页面的视图。我的另一个问题是,在我的代码中,我将它重定向到它应该执行查询的列表页面,但为什么重定向没有像预期的那样发生,url也不会更改为#/ Emplist,显然查询更新列表是还没有执行 – TechQuery
这听起来像你没有你的应用程序结构正确。当页面加载时(从重定向或点击链接),它加载该页面的控制器并更新$ scope。你不应该在控制器之间传递东西。您可以做的最好的做法是在URL中传递查询字符串,并在下一个控制器中解释它们。 –
我的主要列表页面是EmpList,从那里它重定向到我有更新按钮的EmpDetail页面。当我点击更新时,EmpDetail中的控制器被触发并将其重定向到EmpList。由于我有在EmpList中可用的视图,我不知道如何在empDetail的控制器中使用$ scope来填充:( – TechQuery