【问题标题】:ng-click works only after filtering by typing into a fieldng-click 仅在通过输入字段进行过滤后才有效
【发布时间】:2016-12-14 17:30:52
【问题描述】:

我要添加到 dir Paginate 控件过滤。

  <tr dir-paginate="advert in adverts |orderBy:propertyName:reverse | filter: searchAdvert | itemsPerPage: pageSize">

我的数据模型中有 categoryId 属性,我想通过选择 4 个按钮之一来过滤它,所以我编写了如下代码:

    <button type="button" class="btn btn-default"   ng-click="applyFilter(3)">Items</button>
    <button type="button" class="btn btn-default"  ng-click="applyFilter(4)">Accomodation</button>

在我的控制中是:

$scope.applyFilter = function(object) {
    $scope.searchAdvert.categoryId = object;
}

});

但是,它不起作用。仅当我添加以下文本框时它才对我有用:

        <input type="text" placeholder="Search by Category" ng-model="searchAdvert.categoryId" />

如果我写例如1,然后我可以使用按钮并且它们可以工作。 我想让它在没有 thix 文本框的情况下工作(只有按钮)

【问题讨论】:

    标签: angularjs angular-ngmodel angularjs-ng-click


    【解决方案1】:

    将您的 applyFilter 更改为:

    $scope.applyFilter = function(object) {
        if(!$scope.searchAdvert)
           $scope.searchAdvert = {};
    
        $scope.searchAdvert.categoryId = object;
    }
    

    您当前的代码正在尝试在空对象上设置值categoryId。您的文本框示例在内部创建 $scope.searchAdvert 对象并允许绑定 categoryId

    【讨论】:

    • 另一个问题:现在我也有&lt;input type="text" placeholder="Search Advert" ng-model="searchAdvert" /&gt; - 这是正常的输入字段。为什么当我使用此字段中的按钮时显示[object Object] 以及如何防止它
    • @Pawel 如果您使用 $scope.searchAdvert 对象来存储过滤器信息,则不能直接将文本框绑定到它。如果你想绑定到一个对象,你会更适合使用下拉/选择框。
    猜你喜欢
    • 1970-01-01
    • 2020-03-17
    • 2013-06-01
    • 2016-05-19
    • 1970-01-01
    • 2016-09-27
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多