是否可以将传递给Node路由的对象自动绑定到Angular $ scope对象?

时间:2014-03-17 04:08:50

标签: javascript node.js angularjs express

这是一个MEAN堆栈(MongoDB,Express,Angular和Node),使用Jade作为模板引擎。

此表单正在完美地创建用户:

extends layout

block content
    div(ng-controller="Controller")
        .row
            .col-md-6
                .panel.panel-default
                    .panel-heading
                        h3.panel-title User Form
                        .actions.pull-right
                            | <i class="fa fa-chevron-down"></i><i class="fa fa-times"></i>
                    .panel-body
                        form(role="form" novalidate class="user-form")
                            .form-group
                                label First Name
                                input(type="text" class="form-control" placeholder="Eddard" ng-model="user.firstname")
                            .form-group
                                label Last Name
                                input(type="text" class="form-control" placeholder="Stark" ng-model="user.lastname")
                            .form-group
                                label Email
                                input(type="email" class="form-control" placeholder="estark@winteriscoming.net" ng-model="user.email")
                            .form-group
                                label Password
                                input(type="password" class="form-control" placeholder="super-secret-password" ng-model="user.password")
                            button(ng-click="reset()" class="btn btn-secondary") Reset
                            | &nbsp;
                            button(ng-click="update(user)" class="btn btn-primary") Save
            .col-md-6
                pre
                    | form = {{ user | json }}
                pre
                    | master = {{ master | json }}
    script. 
        function Controller($scope, $http) {
            $scope.master = {};
            $scope.update = function(user) {
                $http({
                    method: 'POST',
                    url: '/users/create',
                    data: user,
                }).success(function(response) { $scope.master = angular.copy(response); }) ;

            };

            $scope.reset = function() {
                $scope.user = angular.copy($scope.master);
            };

            $scope.reset();
        }

但我想使用相同的表单来编辑用户,以及创建它们。我的路线设置如下:

exports.create_user = function(req, res) {
    res.render('user-form', {title: 'Create User'});
};

exports.user = function(req, res) {
    User.findById(req.params.id, function(err, user) {
        res.render('user-form', {title: 'Edit User', user: user});
    });
};

如何将user传递回exports.user路由绑定到Angular使用的用户对象?

1 个答案:

答案 0 :(得分:0)

你需要构建一个api并重新发送json,因为你正在做的是再次呈现用户表单表单。所以尝试这样的事情:

User.findById(req.params.id, function(err, user) {
  res.send(user);
});

如果您想维护单页应用,那么它更多的是创建API而不是单个jade模板。