【发布时间】:2014-05-08 18:03:12
【问题描述】:
我一直在论坛上寻找如何在发布后使用服务器更新项目列表。可用示例显示了如何在内存中更新列表。 这是我当前的代码:
$http.get('job/').
success(function(data, status, headers, config) {
$scope.jobs = data;
}).
error(function(data, status, headers, config) {
console.log('Error', status);
});
$scope.save = function(job) {
$http.post('job/', job)
.success(function(data) {
$scope.jobs.push(data); // here i trying update the list in view
}).
error(function(data, status, headers, config) {
console.log('Error', status);
});
};
// HTML List
<tr ng-repeat="job in jobs">
{% verbatim %}
<td> {{ job.name }}</td>
<td>{{ job.description }}</td>
{% endverbatim %}
<td><a ng-click="edit(job.id)" class="btn btn-small btn-primary">edit</a></td>
<td><a ng-click="delete(job.id)" class="btn btn-small btn-danger">delete</a></td>
</tr>
// HTML form
<div class="span6" ng-controller="JobCtrl">
<h5>Create a New Job</h5>
<form class="form-inline">
<div class="form-group block-level">
<input type="text" class="form-control" name="name" ng-model="job.name" placeholder="Name">
</div>
<div class="form-group">
<input type="text" class="form-control" name="description" ng-model="job.description" placeholder="Description">
</div>
<div class="form-group">
<button class="btn btn-default" ng-click="save(job)">Add Job</button>
</div>
</form>
</div>
谢谢!
【问题讨论】:
-
1) 你能粘贴html部分吗? 2) 你确定得到服务器的响应?
-
我添加了 html 部分。帖子正在运行,数据被插入数据库并刷新浏览器我的项目被列出。谢谢!
-
这是在角度范围之外检索/更改数据的问题。有两种解决方案,第一种是手动获取角度来运行这样的摘要 - if(!$scope.$$phase){$scope.$apply();} 或者更好的解决方案来使用服务$http.post() 功能,然后 Angular 将处理更新模型。
-
感谢您的回复!我创建了一个工厂来做到这一点,我在下面发布。
标签: django angularjs django-rest-framework