所以这里是这样的场景:我在一个页面中有多个时事通讯表单,我需要所有这些表单都执行相同的操作:使用一些数据发出 AJAX 请求,并在请求完成后使用警报向用户返回一条消息。到目前为止,我有这个:
var myApp = angular.module('myApp', []);
myApp.directive('form-newsletter', [function() {
return {
restrict: 'C',
link : function($scope, elem) {
$scope.data = { }
var $el = elem.find('button[type=submit]');
$el.on('click' , function(){
if (! $scope.data.email ){
alert("Please, fill in the e-mail");
return false;
}
if ( $(this).val().length > 0 ){
$scope.data.gender = $(this).val();
}
var data = $scope.data;
$.ajax({
url: '/newsletter/join',
type: 'get',
dataType: 'json',
data: data,
success: function(data) {
if (data.validation == true) {
alert('Thank you for joining our mailing list.');
} else {
alert(data.error);
}
}
})
return false;
});
}
}
}]);
它按预期工作,但是,如您所见,我正在使用 jQuery ajax 方法。我想使用Angular内置的http,但由于某种原因我无法注入它。我还尝试制作一个控制器来处理 ajax 请求但没有成功......任何人都知道如何改进这段代码?谢谢。