ng-model with $watch只响应完整字符串(AngularJS)

ng-model with $watch responding only with full strings (AngularJS)

本文关键字:字符串 AngularJS 响应 with watch ng-model      更新时间:2023-09-26

我正在用AngularJS编程一个SPA。现在,我有一个输入字段,它通过$http触发对第三方API的查询。搜索是实时完成的,因为我与输入模型绑定了$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);

尝试用+

替换空格编辑:

这就是他们自己在discogs.com上的搜索是如何使用的,在他们的API中一定有一些不同的实现(也就是破坏)。

Edit2:当我失去type时,我确实得到了一些'Frank Sinatra'的结果,查询这个:

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

也许他们的API的type处理程序假定了关于查询字符串的事情。