我有下面的代码工作,但现在我需要为发生错误时创建一个处理程序,但不确定我是如何插入的..我在主方法中将它放在工厂中吗?
MsaApp.factory('Msa', function ($resource) {
return $resource('/api/Place/:id', { id: '@id' }, { update: { method: 'PUT' } });
});
$scope.delete = function () {
debugger;
var id = this.msa.PlaceId;
Msa.delete({ id: id }, function () {
$('#todo_' + id).fadeOut();
});
}
编辑1:
$scope.delete = function () {
debugger;
// var id = this.msa.PlaceId;
var config = {
method: 'PUT',
url: 'api/Place/:id',
data: { 'some': 'data' }
}
$http(config)
.success(function (data, status, headers, config) {
console.log(data);
})
.error(function (data, status, headers, config) {
console.log(data);
});
//Msa.delete({ id: id }, function () {
// $('#todo_' + id).fadeOut();
//});
}
答案 0 :(得分:1)
首先,我会将所有DOM操作移动到一个指令,并让控制器执行它应该做的事情。
回答你的问题(希望我理解正确):
MsaApp.factory('Msa',['$http', function(http) {
return {
delete: function(someData) {
var config = {
method: 'PUT',
url: '/api/Place/:id',
data : someData
};
http(config)
.success(function(data, status, headers, config) {
console.log(data);
})
.error(function(data, status, headers, config) {
console.log(data);
});
}}
};
}])
MsaApp.controller('ControllerName', ['$scope', 'Msa', function(scope, Msa) {
$scope.delete = function({ id: id }) {
debugger;
Msa.delete({ id: id });
$('#todo_' + id).fadeOut();
};
}])
如果您的工厂无法访问控制器范围并且您希望返回,例如消息返回控制器,则需要使用此处说明的承诺: http://markdalgleish.com/2013/06/using-promises-in-angularjs-views/