我已经多次讨论过这个话题,但在阅读了我在这个主题上看到的每一个答案后,我仍然感到困惑。
正如我之前的许多人一样,我正在尝试使用CRUD功能创建这个基本的To Do应用程序。我有以下(删节显示相关部分)代码:
HTML:
<div ng-repeat="item in items | orderObjectBy:sortby" ng-if="complete == 'N'">
<strong>{{item.title}}</strong><br/>
<em>{{item.details}}</em><br/>
{{item.due}}<br/>
<form>Mark Complete? <input type="checkbox" ng-model="item.complete" value="Y"></form>
<a href="#/item/edit/{{item.id}}">Edit this item</a>
<br/>
<hr/>
</div>
<button ng-click="save()">Save changes</button>
控制器中的JS:
$scope.save = function() {
$http.post('js/services/items.json', $scope.items).success(function(data) {
$scope.msg = 'Data saved' + JSON.stringify($scope.items);
});
};
当我选中“已完成”框,然后“保存更改”时,我获得了更新后的JSON的数据转储,但它从未实际更新过服务器上的JSON文件。该路径与我用于获取JSON的路径完全相同。没有抛出任何错误。它根本就没有做到。
我在这里缺少什么?
答案 0 :(得分:1)
javascript是一种客户端语言,无法访问服务器的文件系统,因此angular本身无法更新Web服务器上的该文件。
要进行服务器端文件操作,需要使用服务器端语言,如php或.net
答案 1 :(得分:0)
呼叫服务端的角色服务
(function () {
'use strict';
angular.module('app')
.controller('controller', controller);
function controller($scope, service) {
$scope.save = function () {
var person = {
Id: $scope.item.id,
Name: $scope.item.name
};
service.update(personId, person, function (status) {
$scope.msg = 'Data saved';
});
};
}
})();
使用服务的角度控制器
namespace App.Controllers.Api
{
[Route("api/[controller]")]
public class TodoController : Controller
{
[FromServices]
public ITodoRepository Repository { get; set; }
[HttpPut("{id}")]
public IActionResult Update(int id, [FromBodyModels.TodoModel data)
{
if (data == null || data.Id != id)
{
return this.HttpBadRequest();
}
this.Repository.Update(data);
return new NoContentResult();
}
}
}
如果您使用的是.NET基础结构,那么您的服务可能就像。
{{1}}
*对于更新方法,您需要使用PUT方法而不是POST
有关ASP.NET 5(下一版ASP.NET)的更多信息,请参阅http://docs.asp.net/en/latest/tutorials/your-first-aspnet-application.html