单个Angular Controller带有多个$ HTTP Get请求

时间:2016-12-22 20:14:41

标签: javascript angularjs node.js routing mongoose-populate

我的服务器端运行了两个mongoose架构。我想在我的 app.js 中添加两个$http.get请求,最后在网页上的MongoDB中显示我的集合中的两个表。只调用一个get函数而没有错误。

server.js

//Data Schema
var tempSchema = new mongoose.Schema({
    topic: String,
    message: Number,
    when: Date
}, {collection: "temperature"});

var humiditySchema = new mongoose.Schema({
    topic: String,
    message: Number,
    when: Date
}, {collection: "humidity"});

var temperature =mongoose.model('temperature', tempSchema);
var humidity =mongoose.model('humidity', humiditySchema);

app.js

app.controller("FormController", function ($http, $scope){
    $http.get("/api/temperature")
        .then(function (response) {
            $scope.temperatures = response.data;
        });
})

app.controller("FormController", function ($http, $scope){
    $http.get("/api/humidity")
        .then(function (response) {
            $scope.humiditys = response.data;
        });
})

还考虑如何在网页上显示两个集合。使用ng-repeat。不幸的是我不能在这里粘贴我的HTML代码。

我很感激我能得到的任何帮助。谢谢

1 个答案:

答案 0 :(得分:0)

另一种处理$ http请求的方法是创建一个Angular Factory。

angular.module( 'myApp.services',[])

add.factory('ApiService', function($http) {
    return {
        getHumidity: function() {
            return $http.get("/api/humidity");
        },
        getTemperature: function() {
            return $http.get("/api/temperature");
        }
    }
})

然后在控制器内部,您应该执行以下操作(请注意,您必须将工厂注入作为控制器的依赖项)

angular.module('myApp.controllers',[])
    .controller("FormController", function (ApiService, $scope){
         function getHumidity() {
            var promise = ApiService.getHumidity();
            promise.then(
                function(response) {
                    $scope.humiditys = response.data;
                },
                function(errorPayload) {
                    console.log(errorPayload);
                });
        };

        function getTemperature() {
            var promise = ApiService.getTemperature();
            promise.then(
                function(response) {
                     $scope.temperatures = response.data;
                },
                function(errorPayload) {
                    console.log(errorPayload);
                });
        };

        getHumidity();
        getTemperature();

    })

然后你定义你的角度App(在大多数情况下是app.js):

angular.module('myApp', ['myApp.controllers','myApp.services'])
    .run(...)
    .config(...)
    ...