如何在没有用户输入的情况下更新AngularJS中的筛选列表

时间:2013-05-13 12:41:36

标签: angularjs filtering

我正在使用filter,当用户在输入框中输入内容时,一切正常。我想要的是通过代码更新过滤结果(例如清除查询),而无需用户的输入。我试图触发更改事件或只是清除输入字段的值,但没有任何成功。

这是我最简单的HTML

<div ng-app ng-controller="test">    
    <input type="text" ng-model="query" placeholder="search..">
    <button>Clear</button>
    <ul class="unstyled">
        <li ng-repeat="item in list | filter:query">
            {{item}}
        </li>
    </ul>
</div>

这是JS:

function test($scope) {
    $scope.list = [120, 566, 777, 889, 998, 332, 112, 440, 881];

    $('button').click(function() {
        $('input').val('');
    });
}

JSFiddle

如果不使用键盘删除输入内容,我可以做什么来取消结果,但是通过代码执行此操作(例如点击清除按钮)?

1 个答案:

答案 0 :(得分:2)

不要通过jQuery注册您的事件处理程序,让ng-click为您处理。

<button ng-click="clearBox()">Clear</button>


function test($scope) {
    $scope.list = [120, 566, 777, 889, 998, 332, 112, 440, 881];

    $scope.clearBox = function(){
      $scope.query = "";
    };
}

<强> Updated fiddle