从JS函数填充角度过滤器不会触发过滤器工作

时间:2015-11-28 23:21:00

标签: javascript angularjs angular-filters

我不确定我正在做的是正确的角度方式,我有以下JSFiddle 显示在重复查询结果中的行。

使用Javascript:

printMax

HTML:

function updateSearch(search) {
    console.log(search);
    document.getElementById('searchFor').value = search;
}

function ExampleController($scope) {
    $scope.profiles = [{
        Company_Name__c: 'John & Co',
        Events_per_year__c: '1-4',
        Delegates_Each_Year__c: '10-50',
        Type_of_Events__c: 'Corporate event'
    }, {
        Company_Name__c: 'Maritis',
        Events_per_year__c: '5-10',
        Delegates_Each_Year__c: '151-300',
        Type_of_Events__c: 'Association'
    }, {
        Company_Name__c: 'Mike & Co',
        Events_per_year__c: '5-10',
        Delegates_Each_Year__c: '1000+',
        Type_of_Events__c: 'Corporate event'
    }, {
        Company_Name__c: 'Adam & Co',
        Events_per_year__c: '5-10',
        Delegates_Each_Year__c: '151-300',
        Type_of_Events__c: 'Association'
    }, {
        Company_Name__c: 'Juliesss',
        Events_per_year__c: '5-10',
        Delegates_Each_Year__c: '301-500',
        Type_of_Events__c: 'Team building'
    }, {
        Company_Name__c: 'Juliet',
        Events_per_year__c: '20+',
        Delegates_Each_Year__c: '301-500',
        Type_of_Events__c: 'Association'
    }];
}

angular.module('searchProfile',[]);

我有一个过滤器,工作正常。但是我有一些下拉菜单,当更改它时会选择选项更新过滤器。不幸的是,当由于此操作而更改过滤器时,表格不是过滤器,我必须删除最后一个单词才能发生。

下面的图片更好地说明了它正在发生的事情

当下拉列表更改时,它会填充搜索的原始输入

when dropdown change it populates the original input for search

在这种情况下删除最后一个“单词”后,表格被过滤了

After deleting last "word" in this case a zero the table got filtered

1 个答案:

答案 0 :(得分:1)

我已经分叉并更新了你的小提琴,所以它现在正在工作: http://jsfiddle.net/2gmn11os/

你遇到的问题是" onchange"事件正在对Angulars摘要周期范围内的变量进行更改。这就是为什么你看到只有在直接更改输入字段时才应用更新的原因 - 这些更改通过ng-model指令处理,该指令启动循环并重新应用过滤器等。

您希望自己选择'阅读更像这样,以便改变他们的状态是Angular循环的一部分:

<select id="numberEvents" ng-model="events" class="form-control" ng-change="updateSearch(events)">

我也改变了代码,所以它也有点整洁,而不是在app结构之外的全局范围内使用该函数:)