javascript - Controller 未使用 Angular $http 服务记录来自 Nodejs 的响应

标签 javascript angularjs node.js angularjs-http

我创建了一个表单并单击该表单,我想查看服务器(nosejs)的响应。在 Angular Controller 中,我调用该服务。当从服务本身调用时,响应是可见的,但当从 Controller 调用时,什么也没有显示。

Controller :

MyApp.angular.controller("loginCtrl", function($scope, UserService){
    $scope.name = "TestName";

    $scope.check = function(user){

        UserService.createUser(user, function(response){
            $scope.userinfo = response;
            console.log("FROM Ctrlr: " + response);
        });
    }

});

服务:

MyApp.angular.factory("UserService", function($http,$location){

        var service = {
            createUser: createUser
        };

        return service;

        function createUser(user){
            $http.post("/register", user).then(function(response){

            console.log("FROM Srvc:" +response);
            });
        }
});

NodeJS:

app.post("/register", function(req, res){
    var user = req.body;
res.json(user);
});

如果我从服务调用它,我可以看到记录到控制台的响应。但从 Controller 本身调用时没有响应。包含 MyApp.angular.factoryMyApp.angular.controller 的原因是我已经在另一个配置文件中声明了 MyApp。

我做错了什么?

最佳答案

为了从工厂获取 Controller 中的响应,请更改工厂中的 createUser 函数,如下所示:

function createUser(user){
            //notice the return here!!!
            return $http.post("/register", user).then(function(response){

            console.log("FROM Srvc:" +response);
            return response.data; //notice the return here too!!!
            });
        }

您需要在函数内部返回 Promise,并在 then 内部返回结果,以便从调用该函数的任何位置访问它。

关于javascript - Controller 未使用 Angular $http 服务记录来自 Nodejs 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42683707/

相关文章:

html - 通过node.js和sqlite3验证用户名和密码

node.js - 如何使用Node.js呈现浏览器错误404

javascript - 如何使用 GraphQL 查询返回目录中的文件列表?

javascript - 宽度改变时隐藏元素

javascript - 如何在 AngularJS ng-include 中获取调用 onload 的元素

html - ng-click for button 不适用于数据表的移动 View

javascript - 使用 ng-repeat 和 foundation accordion 的动画

javascript - 无法从 angularjs 应用程序调用 Web 服务

javascript - 如何使用 javascript 检索不支持的样式

javascript - 从背景 chrome 扩展程序发送分析事件