【问题标题】:Pass Angular Model to SailsJs将 Angular 模型传递给 SailsJs
【发布时间】:2014-03-22 00:50:22
【问题描述】:

我试图通过 $http.post 从 AngularJS 向 Sailsjs 传递表单

我的风帆控制器

  create: function(req, res) {
    console.log("req: "+req.param('user.firstName')); 

    res.send(req.param('user.firstName'));

   },

我的 Angular 控制器

    function RegisterController($scope, $http) {

        $scope.submit = function(){
            console.log($scope.user.firstName); // works fine so far 
            $http.post('/user/create', $scope.user)
                .success(function(data, status, headers, config) {
                  console.log("success");
                })
                .error(function(data, status, headers, config) {
                  console.log("error");
                });

        }

    }

如果我像 /user/create?user.firstName=myFirstName 这样调用我的sails 函数,它可以正常工作。但是,如果我从 Angular 传递过来,我尝试读取传递的数据。我不知道。我看不懂参数...

有人有什么想法或一个小例子吗?

干杯真棒社区=)

【问题讨论】:

  • 对此不太确定。请尝试 console.log(req.params.all());或 console.log(req.param('firstName')); ...我们不再使用帆,所以我可能有点过时了;)
  • console.log(req.param('firstName') 有效。谢谢!!!
  • req.params 用于名称路由。使用 req.query。阅读快递文档expressjs.com/api.html
  • @wayne 不正确。 req.param 将从路由、解析后的正文和查询字符串(按此顺序)中获取数据。

标签: angularjs sails.js


【解决方案1】:

您将$scope.user 对象发布到您的路由,因此它不会被命名为user。如果$scope.user 包含,例如:

{firstName: "John", lastName: "Doe"}

那么它们将在您的控制器操作中以req.param('firstName')req.param('lastName') 的形式出现。

如果您要将整个 $scope 对象发布到/user/create(不要这样做!),那么您将能够访问req.param('user').firstNamereq.param('user').lastName 等. 但是,您仍然无法访问req.param('user.firstName') 之类的内容;这些是 Angular 表达式,但它们在服务器端不起作用。

【讨论】:

  • 顺便说一句,如果您需要将您的用户模型(或任何其他模型)完全绑定到角度,您可以尝试 angular-sails-bind (github.com/diegopamio/angular-sails-bind) 我刚刚向世界发布了一个几分钟前:)。我为自己的项目制作了它,然后决定将它作为一个独立的库,这样每个人都可以受益,我可以第一次体验开发 bower 包。我希望它可以帮助你。顺便说一句:它适用于sails 0.10(因为有些事情,比如主题名称自0.9以来已经改变)。如果您需要使其适用于 0.9,请告诉我,我很乐意为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多