2015-11-03 2 views
0

Интересно, как подключить кнопку поиска к полю ввода.ng-click api search with AngularjS

controllers.js

angular.module('weatherApp.controllers', []) 
.controller('weatherCtrl', function($scope, $http) { 

    $http.jsonp('http://api.openweathermap.org/data/2.5/find?q=' + $scope.SearchCity + '&type=like&APPID=&callback=JSON_CALLBACK')    
     .success(function(data){ 
      console.log('success'); 
      $scope.cities = data; 

    }); 

}); 

all.html

<input type="text" ng-model="SearchCity" placeholder="Search for city" /> 
<input type="submit" ng-click="Search" Value="Search" /> 

<tr ng-repeat="city in cities.list | limitTo: 10 | filter:SearchCity"> 
    <td>{{city.name}}</td> 
</tr> 

app.js

angular.module('weatherApp', ['weatherApp.controllers', 'ngRoute']).config(['$routeProvider', function($routeProvider){ 
    $routeProvider.when('/all', {templateUrl: 'templates/all.html', controller:'weatherCtrl'}); 
    $routeProvider.otherwise({redirectTo: '/all'}); 
}]); 

ответ

0

попробовать что-то вроде этого:

Контроллер:

.controller('weatherCtrl', function($scope, $http) { 

    $scope.cities = []; 

    $scope.callOpenWeatherMap = function(searchCity){ 
    $http.jsonp('http://api.openweathermap.org/data/2.5/find?q=' + searchCity + '&type=like&APPID=&callback=JSON_CALLBACK') 
     .then(function(data){ 
     console.log('success', data); 
     $scope.cities = data; 
    }).catch(function(error){ 
     console.log('error', error); 

    }); 
    }; 

}); 

HTML:

<input type="text" ng-model="searchCity" placeholder="Search for city" /> 
    <input type="submit" ng-click="callOpenWeatherMap(searchCity)" Value="Search" /> 

    <tr ng-repeat="city in cities.list | limitTo: 10 | filter:searchCity"> 
    <td>{{city.name}}</td> 
    </tr> 

UPDATE

Чтобы улучшить код, который вы могли бы создать службу OpenWeatherMap где разместить все mathods/вызывает OpenWeatherMap api:

Услуга:

.service('OpenWetherMap', function($http){ 

    this.find = function(searchCity){ 
    return $http.jsonp('http://api.openweathermap.org/data/2.5/find?q=' + searchCity + '&type=like&APPID=&callback=JSON_CALLBACK'); 
    }; 

}) 

Контроллер:

.controller('weatherCtrl', function($scope, OpenWetherMap) { 

    $scope.callOpenWeatherMap = function(searchCity){ 
    OpenWetherMap.find(searchCity).then(function(data){ 
     console.log('success', data); 
     $scope.cities = data; 
    }).catch(function(error){ 
     console.log('error', error); 
    }); 
    }; 

}); 
+0

Я получаю это в консоли mozilla: success Object {data: Object, status: 200, headers: headersGetter/<(), config: Object, statusText: "load"}. он не перечисляет города, которые ищут хотя бы –

+0

Попробуйте изменить эту строку на: console.log ('success', data.data); – manzapanza

1

Я мог бы быть misund что вы просите, но вы должны уметь заключить свой jsonp-вызов в функцию $scope.Search?

+0

Я довольно новый для кодирования и не уверен, что вы имеете в виду с обертыванием. Например, когда я пишу Stockholm в поле поиска, я хочу, чтобы он помещал входные данные в $ scope.searchCity. Но я до сих пор не знаю, как работает ng-click –

+0

'$ scope.Search = function() {$ http.jsonp (...); } ' – Lee

+0

Я боролся с этим, так как не знаю, как подключить кнопку к полю ввода. Это то, что я ищу! :) –