我有这种保存方法。
$scope.save = function(){
$scope.product.$save(function(pipe){
alert("fire!"); //not working
});
};
有效。它将帖子保存到数据库中。但我想为用户显示一条消息。像“您的更新已保存”之类的东西。很明显,回调方法适用于此。但它不起作用。我跑的时候没有警报(“火”)。即使$ save成功了。有什么不对?我该怎么调试呢?
PS。要想做一个小提琴/傻瓜很难做到这一点。但如果我需要包含更多代码,请留下评论。
答案 0 :(得分:1)
问题解决了。
问题是服务器(节点js)发送了不完整的响应。
我只有这个:
connection.query("UPDATE product SET ? WHERE id = ?"
我把它更改为:
if (connection) {
connection.query("UPDATE product SET ? WHERE id = ?", post, function(err, rows, fields) {
if (err) throw err;
res.contentType('application/json');
res.write(JSON.stringify(rows));
res.end();
});
}
然后回调按预期工作。
答案 1 :(得分:0)
对范围进行所有属性的评估。与JavaScript不同,其中names默认为全局窗口属性,Angular表达式必须使用$ window来引用全局窗口对象。例如,如果要调用窗口中定义的alert(),则必须在表达式中使用$ window.alert()。这样做是为了防止意外访问全局状态(微妙错误的常见来源)。
首先将$window模块注入Controller,然后执行..
$window.alert('fire!');
答案 2 :(得分:0)
当您拨打警报时,承诺尚未就绪,使用.then()
和.catch()
可能是解决方案。另见Promise on AngularJS resource save action
答案 3 :(得分:0)
您可能在浏览器的控制台上有一些错误消息,如果无法正确解析您的服务器响应,则服务器的错误响应可能会引发异常,btw应该是更新的资源(json)或空白
同时检查可能相关的this question