AngularJS过滤器在过滤结果之前需要两次点击

时间:2016-09-08 15:05:56

标签: angularjs

我是棱角分明的初学者。我很确定我这样做是完全不正确的,但是因为我终于有了这个并且有点工作了#34;因为它在第二次点击时工作,我被困在这个方向,似乎无法找到另一种方法。

过滤器在第二次点击时排序,因为它初始化为"未定义"在第一次点击之前,根据我的信念设置它。

在我的HTML中:

<div class="col-xs-12 col-sm-4 location-list" ng-repeat="key in careerlist.location">
                        <div class="locations" ng-click="careerlist.criteriaMatch()">{{key}}
                        </div>
                    </div>

<div class="col-xs-12">
    <div class="row">
        <div class="col-xs-12 col-sm-6 col-md-4 job-container" ng-repeat="job in careerlist.career | filter : searchText | filter: selectExperience | filter: careerlist.criteria.name">
            <h2>
                {{job.title}}
            </h2>
            <h3>
                {{job.location}}
            </h3>
            <div class="job-description" ng-bind-html="job.description | limitHtml : 200">
            </div>
            <br><br>
            <button><a href="{{job.url}}">Read More</a></button>
        </div>
        <br><br>
    </div>
</div>

在我的控制器中:

cl.criteriaMatch = function( criteria ) {
            jQuery(document).on('click', '.locations', function(){
                cl.criteria = {};
                console.log("just the element text " + jQuery(this).text());
                cl.criteria.name = jQuery(this).text();
                return function( criteria ) {
                    return criteria.name === criteria.name;
                };
            });

        };

1 个答案:

答案 0 :(得分:0)

使用ng-click代替jQuery#on('click')。 Angular不知道应该更新过滤器。

<强>更新

@Makoto指出点击被绑定两次。看起来你应该完全删除jQuery绑定。我甚至会建议从你的项目中删除jQuery。