玉页被多次渲染

时间:2016-08-22 08:16:59

标签: javascript angularjs node.js express

我有一个玉页,从网址获取参数(用户名)并呈现有关此用户的信息。但是,页面正在呈现多次。当我打印网址时,第一次看起来好像是完整的(使用用户名)而其他时候看不到。我正在使用节点js和angular来提供数据。这是我的代码:

NODE JS :( myuser是我正在测试的现有用户的静态值)

router.get('/personel', function (req, res) {
    var user_name = req.query['username']; 
    var fullname= 0;
    var fields = ['fullname'];

    if(req.url == '/personel?username=myuser'){
        models.users.findAll({
            attributes: fields,
            limit: 1,
            where: {username: user_name}
        }).then(function (result) {

            res.render('personel',
            {       
                title : 'Personel', 
                username: user_name,
                fullname: result[0].fullname,
            })
        }); 
        console.log(req.url);
    }
});

控制器:

Todos.get().success(function(data) {
    if ($scope.todosi != undefined) {
        $scope.todos = data;
        $scope.loading = false;
    }
});

JADE代码:

form
        input(type='text', ng-model='todosi.username', value=username)
        table.table.table-hover
          tr
            td full name
            td
              input(type='text', ng-model='todosi.fullname', placeholder=fullname)
        button.btn.btn-primary.btn-lg(type='submit', ng-click='createTodo()') Update

因此,如果我在浏览器中将页面加载为http://localhost:31/apiv2/customer/personel?username=myuser,则用户名为空,但fullname具有实际全名的值。

在日志中,使用req.url我最初得到/personel?username=myuser,然后只得到/personel

但是在Mozilla Developer工具中 - >网络,引用者总是http://localhost:31/apiv2/customer/personel?username=myuser

我试图强制页面仅在网址包含用户名作为参数时呈现,但它不会改变任何内容

PS:尽管它可能看起来像这样,但玉是正确的意图并没有给出任何错误。

1 个答案:

答案 0 :(得分:1)

首先,如果你有一个查询参数,那么更好的方法是:

router.get('/personel/:username', function (req, res) {});

其次我认为您的页面已加载多次,因为您有不同(但相同)的路径。

如果您使用此解决方案:

router.get('/personel/:username', function (req, res) {});

检查路线的顺序。 此订单无效:

 /personel/:username
 /personel/sayhello

因为sayhello它被捕获为:username