带有$ watch的ng-model仅响应完整字符串(AngularJS)

时间:2014-03-16 00:49:52

标签: javascript angularjs ngresource angular-ngmodel

我正在使用AngularJS编写SPA。现在,我有一个输入字段,用于触发第三方API的$ http查询。搜索是实时完成的,因为我有一个与输入模型的$ watch绑定。

我的问题是,无论出于何种原因,结果只会在完整字符串与结果一致时出现,而不是之前出现。

例如,如果我正在寻找 Frank Sinatra ,当 Frank 输入到输入中时会出现一些结果,但是一旦我在 Frank Sin ,将出现完全不相关的结果(或结果与 Sin 一致,但不与整个字符串一致,并且只有在输入整个字符串后才会出现所需的结果。 /> 我的理解是,输入不会将输入的文本作为一个整体来处理,而是作为不同单词的总和,这会使查询失败。

我正在附上我的JS,也许我做错了什么!

angular.module('myApp', ['ngResource'])

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

1 个答案:

答案 0 :(得分:1)

尝试用+

替换空格

编辑:

如果使用他们自己在discogs.com上的搜索,必须在他们的API中实现不同的(也就是破坏的)。

编辑2:我确实得到了一些“弗兰克辛纳屈”#39;当我丢失type时查询结果:

http://api.discogs.com/database/search?q=frank+sin

也许他们的API type处理程序会假设有关查询字符串的内容。