私は Angular の初心者で、ディレクティブで $http と $location を使用することに関して愚かな質問があります。Todo リストを作成していて、リンクをクリックしたときにエントリを削除したいと考えています。
現在、私はに属性ディレクティブを設定しており<a>
、クリックされたときに API への削除呼び出しを行いたいと考えています (バックボーンでこれを行う場合、呼び出しをトリガーするクリック イベントをバインドするのに似ていると考えていました)。コレクションからモデルを削除し、それに応じてコードを構成しましたか?)
指令
app.directive('delete', function() {
return {
link: function(scope, element, attrs) {
element.bind('click', function(event) {
scope.$apply(function() {
$http.delete('/api/posts/' + $routeParams.id).
success(function(data) {
$location.path('/app')
})
})
})
}
}
})
コントローラ
app.controller('IndexCtrl', ['$scope', '$http', '$location'
function($scope, $http, $location) {
$http.get('/api/posts').
success(function(data) {
$scope.posts = data.posts;
})
}
]);
マークアップ
div(ng-controller='IndexCtrl')
h1 Blog
div
a.btn(href='/app/newpost') New Post
ul
li(ng-repeat='post in posts')
a(href='/app/{{ post._id }}')
h3 {{ post.title }}
div {{ post.text }}
a(href='/app/editpost/{{ post._id }}') Edit
a(href='#', delete id='{{post._id }}') Delete