如何使用服务在Angular中提交表单后更新列表
How to update list after submitting form in Angular with a service?
我是Angular的新手,我正在尝试设置一个基本的"提交评论"&"显示评论列表"页面。我希望在提交评论后更新评论列表。目前我可以提交,但必须手动刷新页面才能看到。
控制器:
app.controller('FormController', function($scope, CommentService) {
$scope.comment = {}; //will be populated by basic form
$scope.submit = function() {
return CommentService.post($scope.comment).then(function(){
$scope.comment = ""; //blanks out form on POST
});
}
});
app.controller('CommentsController' function($scope, CommentService) {
CommentService.list().then(function(comments){
$scope.comments = comments.data;
});
});
服务:
app.service('CommentService', function($http) {
this.post = function(comment) {
return $http.post('/api/v1/comments/', comment);
};
this.list = function() {
return $http.get('/api/v1/comments/').
success(function(data) {
return data;
});
};
//How do I connect the two controllers?
});
HTML表单/列表是超级通用的,我只使用"ng repeat"来显示注释。我在这里走对了吗?有什么简单的事情我可以做吗?当通过表格提交评论时,评论列表会更新?
提前感谢!
只要编辑语义以匹配程序,就可能做到这一点。
在您的控制器中:
var getList = function() {
$scope.comments = CommentService.list();
};
CommentService.registerObserverCallback(getList);
为您服务:
var observerCallbacks = [];
// register the observer's callback in our callback list.
this.registerObserverCallback = function(callback){
observerCallbacks.push(callback);
};
// function to notify our observers and call the callback they registered with
var notifyObservers = function(){
angular.forEach(observerCallbacks, function(callback){
callback();
});
};
this.post = function(comment) {
return $http.post('/api/v1/comments/', comment).success(function(data, status, headers, config) {
notifyObservers();
})
};
所以基本上,你的控制器告诉你的服务,"嘿,我正在观察你……如果你做了什么,调用这个回调函数",并将其传递给getList
。服务注册观察器,并在post()
返回成功后调用回调。
相关文章:
- Javascript更新孙窗口中的表单元素
- 如何创建对表单的自我更新响应
- 表单文本框未自动更新
- 如何在ExtJS中用表单更新商店
- 节点.js表单更新有和没有 ajax
- 第三方(随机网站访问者)是否有可能通过 php 表单更新.html索引文件中的某些.js代码
- 使用JS/RRails和下拉表单更新URL查询字符串
- 表单更新“;重置”;按钮以获取新数据
- 通过Django/Python中的自定义表单更新用户数据
- 如何从没有数据库的另一个页面创建用HTML表单更新的页面
- Rails4:通过Ajax进行的表单更新不起作用->模板错误
- 使用jquery中的click()事件从表单更新Highchart
- 通过表单更新JSON
- 从Sencha应用程序中的表单更新服务器上的xml文件
- Gs函数传递'undefined'到jsfunction(动态表单更新)
- 不能用动态数组id从流星表单更新mongo值
- Javascript表单更新点击
- 用HTML表单更新XML
- Javascript刷新发生在子表单更新数据库之前
- Rails动态表单更新