2016-03-02 42 views
1

剛學習MEAN堆棧,我正在擺弄它,但我有點迷路。Angular.js和Node.js - 將輸入變量通過控制器傳遞給server.js

我想要實現的是利用外部API來自動填充有關最初鍵入的標記的輸入字段。

route info

所以現在的問題是,我怎麼傳的foo一路server.js呼叫的價值?

  1. 最終用戶進入tag和壓力機「獲取數據」
  2. 控制器傳遞的tag值(在我.ejs文件作爲ng-model="object.tag"定義)getData路線
  3. server.js需要tag和將其傳遞到外部API URL以呼叫
  4. 外部API完成它的工作,爲我返回一個漂亮而漂亮的JSON文件。
  5. 控制器自動填充儘可能多的表單字段,因爲它可以從返回的JSON中填充。

這裏有幾個碼位只是讓你明白什麼,我有更多一點的結構:

--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(); 
}); 
  • 我是否正確做我的路由爲節點打算如何工作的?
  • 如何使用Angular將輸入值傳遞給server.js中的此內部函數?

回答

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 
}) 

希望這適合你!

+0

當響應回來時,他需要調用'$ scope。$ apply'用於在控制器上更新數據 – eltonkamami

+0

好吧,它不會是foo,我以此爲例。這是一個輸入字段。所以有人會輸入「#992823」(或其他可接受的外部API標籤)。我需要從表單中傳遞值。 –

+0

@NicholasHazel我使它通用!這解決了你的問題? –

相關問題