我正在接受一个由同行启动的项目,并且遇到API调用问题。 这是我的角度控制器:
angular.module('oowli').factory('Note', ['$http', function($http) {
var Note = function(data) {
angular.extend(this, data);
};
Note.prototype.save = function() {
var note = this;
return $http.post('/notes', this).then(function(response) {
note = response.data;
}, function(error) {
return error;
});
};
return Note;
}]);
并且在此函数中执行调用:
var saveNote = function(Note, scope){
return function(span, phrase){
var noteObj = new Note({
user: scope.global.user._id,
content: span.innerText
});
noteObj.save().then(function(){
console.log(noteObj);
});
};
};
问题是,在保存笔记之后,noteObj是原始文件,而不是从服务器返回的文件(带有_id字段)。
在Note.prototype.save
上调试,response.data
附带_id;
我需要知道如何在saveNote函数中访问返回的Note对象。
答案 0 :(得分:1)
您正在将新对象分配给Note.prototype.save函数中的局部变量'note',但之后不会对其执行任何操作。
最快的解决方案是将返回对象的属性复制到笔记而不是分配给它,因此不是:
note = response.data;
这可能有效:
angular.copy(response.data, note)
总的来说,虽然我不喜欢让Note类负责保存自己的方法。我会创建一个保存对象的笔记服务。