シナリオは次のとおりです。ページ全体に複数のニュースレター フォームがあり、それらすべてで同じアクションを実行する必要があります。データを使用して 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 リクエストを処理するコントローラーを作成しようとしましたが、成功しませんでした...このコードを改善する方法を知っている人はいますか? ありがとう。