2014-03-12 4 views
1

제 3 자 API로 쿼리를 작성하는 작은 코드가 있습니다. 이 하나입니다 : html로 측에서 AngularJS로 ngResource get() 검색으로 입력 바인딩

angular.module('myApp', ['ngResource']) 
function Hello($scope, $http) { 

$http.get('http://api.discogs.com/database/search?type=artist&q=alva-noto&page=1&per_page=200'). 
    success(function(data3) { 
     $scope.results = data3.results; 
    }); 

}; 

는, 지금 난 그냥 하나 개의 특정 검색에 기반을 둔 리튬에 NG 반복,와 UL를 표시합니다. 좋아요 :

<h1>Search</h1> 
    <ul> 
    <li ng-repeat="result in results">{{result.title}}</li> 
    </ul> 

내 질문은 검색 쿼리로 작성된 텍스트를 바인딩하는 입력란을 어떻게 만들 수 있습니까? 문자열을 =처럼 삽입 하시겠습니까? = 문자열 :

$http.get('http://api.discogs.com/database/search?type=artist&q=string&page=1&per_page=200') 

어떤 생각이 들었습니까?

감사합니다. Eric

답변

2

$scope.$watch을 사용하여 수신기를 입력 변수로 설정하십시오.

<div class="test" ng-controller="Ctrl"> 
    <input type="text" ng-model="name"> 
    <ul> 
    <li ng-repeat="result in results">{{result.title}}</li> 
    </ul> 
<div> 

JS

var app = angular.module('app', []); 

function Ctrl($scope, $http) { 
    var get_results = function(name) { 
      $http.get('http://api.discogs.com/database/search?type=artist&q='+ name + '&page=1&per_page=200'). 
     success(function(data3) { 
      $scope.results = data3.results; 
     }); 
    } 
    $scope.name = '' 
    $scope.$watch('name', get_results, true); 

} 

작업 JSFiddle

+0

그것은 훌륭하게 작동합니다! 한 번만 더 질문하기 : 쿼리에서 type = artist를 지정했지만 결과적으로 나는 또한 릴리즈하고 일부는 여러 번 반복합니다. 왜 이런 일이 일어나는 지 아십니까? 감사합니다 Valeh! –

+0

jsfiddle의 코드가 아닌 위 코드를 사용하면 아티스트 만 응답하지만 name = ''인 기본값은 결과를 보여줍니다. jsfiddle의 큰 공간에 코드를 사용하면 기본값은 비어 있지만 아티스트가 아닌 결과가 반환됩니다. 해결 방법에 대한 아이디어가 있습니까? 다시 한 번 감사드립니다! –

+0

당신을 환영합니다! 문제는 사용하는 웹 서비스와 관련이 있습니다. 그래서 당신은 클라이언트 측에서 그것을 해결할 수 없습니다. –