2016-03-02 2 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 и передает его во внешний URL-адрес API для вызова
  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(); 
}); 
  • ли я делаю свою маршрутизацию должным образом для того, как узел предназначен для работы?
  • Как передать входное значение этой внутренней функции в 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 я сделал это родовым !! это решило ваш вопрос ?? –

Смежные вопросы