我的MVC控制器中有以下操作:
[HttpPost]
public JsonResult Save(TestModel model)
{
var newId = _myService.CreateItem(model);
return Json(newId);
}
这会运行并返回一个ID,我看到它在Fiddler中返回,例如42.但是我的角度代码它没有得到数字,但返回的值显示为data:b,其中包含一个promise 。有没有办法获取成功方法数据中返回的数字?我的角度代码如下:
vm.save = function () {
TestRepository.save(vm.MyData).$promise.then(
function (data) {
// Here data is returned as data : b, not the number
},
function () {
alert('An error occurred while creating this record.');
});
}
我的服务是
function TestRepository($resource) {
return {
save: function (item) {
return $resource('/mysite/setup/Save').save(item);
}
}
该服务可以调用Action,因为我看到代码点击我的断点,我可以看到newId也设置为42,但我从未看到它回到角度方面。
答案 0 :(得分:3)
由于$resource
通常用于连接RESTFUL服务,所以请在格式良好的对象中发送数据,这就是所有API的工作方式。从原始类型的API发送数据不鼓励人们使用坏模式。理想情况下,它应该只返回JSON
对象。
[HttpPost]
public JsonResult Save(TestModel model)
{
var newId = _myService.CreateItem(model);
return Json(new {Id = newId});
}
<强>代码强>
vm.save = function () {
TestRepository.save(vm.MyData).$promise.then(
function (data) {
console.log(data.Id)
},
function () {
alert('An error occurred while creating this record.');
}
);
}