node.js、express、およびjadeを使用して、非常に単純なToDoリストアプリを作成しました(以下のコメントのチュートリアルに従います)。アプリが機能するので、リストに項目を追加でき、リスト項目の名前と同じ ID で redis データベースに保存されます。
リスト項目の横に削除ボタンが表示され、クリックすると項目がデータベースから削除されるように、jade テンプレートを編集するにはどうすればよいですか?
関連するコードは次のとおりです。
Routes.js ファイル
exports.index = function(req, res){
res.render('index', { title: 'Welcome to JSPlayground Todo' });
};
var redis = require("redis"),
client = redis.createClient();
exports.todo = function(req, res){ //Pulls items from database to display on page
var todos = [];
client.hgetall("Todo", function(err, objs) {
for(var k in objs) {
var newTodo = {
text: objs[k]
};
todos.push(newTodo);
}
res.render('todo', {
title: 'New Todo List',
todos: todos
});
});
};
exports.saveTodo = function(req, res) { //Saves a list item from input box to database
var newTodo = {};
newTodo.name = req.body['todo-text'];
newTodo.id = newTodo.name.replace(/ /g, '');
//console.log(newTodo.id);
//console.log(newTodo.name);
client.hset("Todo", newTodo.id, newTodo.name);
res.redirect("back");
};
todo.jade ファイル
h1 new todo list
form(action="/save", method="post")
p
label Enter a new todo item
input(type='text',placeholder='new todo', name='todo-text')
p
input(type='submit', value='Save')
ul
each todo in todos
li #{todo.text}
テンプレートページにリンクを張る場合
a(href="/del") del
/delをroutes.jsファイルのこの関数にルーティングします
exports.delTodo = function(req, res) {
var delTodo = {};
delTodo.id = "Test";
client.hdel("Todo", delTodo.id);
res.redirect("back");
};
「Test」という ID を持つ単一のリスト項目を削除します。しかし、クリックされた特定のリスト項目を削除する方法がわかりません。