在AngularJS的ng-model中定义一个空值

Defining an empty value on ng-model in AngularJS

本文关键字:一个 空值 定义 AngularJS ng-model      更新时间:2023-09-26

我有一个$watch的输入,它实时更新一个搜索查询,全部使用AngularJS。我的问题是,即使将模型的初始值定义为空,它也会触发搜索并默认显示结果。

所以我的问题是,目标是在默认情况下有一个空值,是否有一些方法来实际触发搜索只有当用户输入的东西?我尝试创建一个函数来触发ng-click上的$watch,但到目前为止还没有成功,ng-init也是如此。也许可以在ng上创建一个条件-重复使它只在name != " ?

有什么可能的解决办法吗?

这是我的JS:

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=30').
    success(function(data3) {
        $scope.results = data3.results;
    });
}
$scope.$watch('name', get_results, true);
$scope.name = '';
}

我的HTML:

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

和一个工作的JSFiddle。

任何帮助将非常感激!谢谢,Eric

使用get_results函数中的if条件来检查名称是否为空,并在非空字符串时执行请求。

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

JSFiddle