2016-09-04 73 views
-1

功能的NodeJS按值傳遞參數

/*jslint devel: true, vars: true */ 
 

 
var express = require('express'); 
 
var session = require('cookie-session'); 
 
var bodyParser = require('body-parser'); 
 
var urlencodedParser = bodyParser.urlencoded({ 
 
    extended: false 
 
}); 
 

 
var app = express(); 
 

 
app.use(session({ 
 
    name: 'session', 
 
    keys: ['key1', 'key2'], 
 
    secret: 'todotopsecret' 
 
    })) 
 
    .use(function (req, response, next) { 
 
    if (typeof(req.session.todolist) == 'undefined') { 
 
     req.session.todolist = []; 
 
    } else { 
 
    } 
 
    next(); 
 
    }) 
 
    .get('/', function (req, response) { 
 
    "use strict"; 
 
    response.render('todolistMoi.ejs', { 
 
     vecth: req.session.todolist 
 
    }); 
 
    }); 
 

 
app.post('/todo/ajouter/', function (req, res) { 
 
    "use strict"; 
 
}); 
 

 

 
app.get('/todo/supprimer/:id', function (req, res) { 
 
    "use strict"; 
 
    req.session.todolist.splice(req.params.id, 1); 
 
    res.writeHead(302, { 
 
    'Location': 'http://localhost:3615/' 
 
    }); 
 
    res.end(); 
 
}); 
 

 
app.get('/initt', function (reqq, resp) { 
 
    "use strict"; 
 
    reqq.session.todolist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 
 
    resp.writeHead(302, { 
 
    'Location': 'http://localhost:3615/' 
 
    }); 
 
    resp.end(); 
 
}); 
 
    
 
app.listen(3615);

我todolistMoi.ejs是:

<!--https://openclassrooms.com/courses/des-applications-ultra-rapides-avec-node-js/tp-la-todo-list --> 
 

 
<!doctype html> 
 
<html lang="fr" ng-app="todoApp"> 
 
    <head> 
 
    <meta charset="UTF-8"> 
 
    </head> 
 
    <body> 
 
    <H2>TODOLISTS</H2> 
 
    <DIV>Liste 
 
     <ul> 
 
     <BR>Longueur= 
 
     <%=vecth.length %> 
 
     <% for(var i=0;i<vecth.length ;i++) { %> 
 
      <li> 
 
      <a href="/todo/supprimer/:<%=i%>">x</a> 
 
      <%=vecth[i]%> 
 
      </li> 
 
     <%}%> 
 
     </ul> 
 
    </DIV> 
 
    <DIV> 
 
     <form method="post" action="/ajouter"> 
 
     <label>Entrer la tache à ajouter</label> 
 
     <input type="text" name="tachee" required> 
 
     <input type="submit" value="Submit"> 
 
     </form> 
 
    </DIV> 
 
    </body> 
 
</html> 
 

而且是的package.json

{ 
 
    "name": "ma-todolist", 
 
    "version": "0.1.0", 
 
    "dependencies": { 
 
    "express": "~4.11.0", 
 
    "ejs": "~2.1.4", 
 
    "cookie-session": "~1.1.0", 
 
    "body-parser": "~1.10.1" 
 
    }, 
 
    "author": "Mateo21 <[email protected]>", 
 
    "description": "Un gestionnaire de todolist ultra basique" 
 
}

我試圖給一個變量req.params.id拼接功能。經過調查,req.params.id在通話前後獲得了良好的價值。但無論我選擇什麼,localhost/initt THEN localhost /:它會刪除第一個項目,但不是我選擇的項目?爲什麼?

+2

對不起你的測試建議修正你能解釋一下你能指望它實際上做什麼? – martriay

+0

我點擊第八項(例如):它刪除第一個元素,而我期望它刪除第八項。 – moueza

回答