Angular.js和Node.js - 通过控制器将输入变量传递给server.js

时间:2016-03-02 11:58:10

标签: javascript angularjs node.js routes mean-stack

此刻刚刚学习了MEAN堆栈,我正在摆弄它,但我有点失落。

我想要实现的是利用外部API自动填充有关最初输入的标记的输入字段。

route info

问题是,如何将foo的值一直传递给server.js以进行通话?

  1. 最终用户输入tag并按“获取数据”
  2. Controller将tag (在我的.ejs文件中定义为ng-model="object.tag"的值传递给getData路径
  3. server.js获取tag并将其传递到外部API网址以调用
  4. 外部API做了它的事情,为我返回一个漂亮而漂亮的JSON文件。
  5. 控制器自动从返回的JSON中填充尽可能多的表单字段。
  6. 以下是一些代码位,以便您了解我的更多内容的结构:

    - index.ejs -

    <input type="text" ng-model="object.tag" />
    <button ng-click="grabFooInfo()">Get Data</button>
    

    - controller.js -

    $scope.grabFooInfo = function(){
        $http.get('/getData').success(function(res){
            // Will do stuff here after data comes back
        });
    };
    

    - server.js -

    app.get('/getData', function (req, res) {
        var options = {
            host: 'my.api.im.calling.com,
            path: '/v1/fooApi/' + // #Need foo here //
            headers: {
                accept: "application/json"
            },
            method: 'GET'
        };
    
        var req = https.request(options, function (response) {
            var fooData = '';
            response.on('data', function (data) {
                fooData += data;
            });
            response.on('end', function () {
                res.send(fooData);
            });
        });
        req.on('error', function (e) {
            console.log('problem with request: ' + e.message);
        });
        req.end();
    });
    
    • 我是否正确处理了Node的工作方式?
    • 如何使用Angular将输入值传递给server.js中的此内部函数?

1 个答案:

答案 0 :(得分:1)

在客户方面, 的 HTML

<input type="text" ng-model="object.tag" />
<button ng-click="grabFooInfo(object)">Get Data</button>

<强> JS

 $scope.grabFooInfo = function(object){
    $http({
        url:'/getData', 
        method: "GET",
        params: object
     });
});

在服务器端,

app.get('/getData', function (req, res) {
   var data = req.params.data; // it contains the value foo
})

希望这对你有用!!