【问题标题】:Binding input with ngResource get() search with AngularJS使用 ngResource 绑定输入 get() 使用 AngularJS 搜索
【发布时间】:2014-03-12 23:34:30
【问题描述】:

我有一小段代码可以对 3rd 方 API 进行查询。是这个吗:

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

};

在 html 方面,现在我只是根据一个特定的搜索在 li 上显示一个带有 ng-repeat 的 UL。像这样:

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

我的问题是,我如何创建一个输入字段,将里面的文本与搜索查询绑定?就像将字符串引入 ?=string:

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

有什么想法吗?

谢谢! 埃里克

【问题讨论】:

    标签: javascript angularjs ngresource angular-ngmodel


    【解决方案1】:

    使用$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

    【讨论】:

    • 效果很好!还有一个问题:在查询中我指定 type=artist,但在结果中我也得到了版本,其中一些甚至重复了好几次。知道为什么会这样吗?谢谢瓦莱!
    • 我观察到,如果我使用上面显示的代码(不是 jsfiddle 中的代码),它只会响应艺术家,但默认值即使是 name='',也会显示结果。如果我使用来自 jsfiddle 的大空间代码,默认为空,但它返回的结果不是艺术家。任何解决方法的想法?再次感谢!
    • 不客气!问题与您使用的 Web 服务有关。所以你不能在客户端解决它。
    • 在 ng-click 输入时创建一个初始化 $watch 的函数怎么样?
    • 也回答了你的另一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多