jQuery Chosen选择不使用angularjs ng-model过滤表格中的数据

时间:2015-09-02 15:27:12

标签: html angularjs jquery-chosen

我必须在我正在工作的网页上做一些更改,在此之前,我有一个输入文本字段来过滤表格上的结果,这是代码:

  <p><input type="text" class="form-control"  ng-model="search" placeholder="Search..."></p> 

并且该表的代码是:

<tr ng-repeat="data in someFile| filter:search | orderBy:'name'">
     <td>{{data.state + ', ' + data.city}}</td>
     <td> more data goes here etc...</td>
</tr>

运行得很好,但现在我需要更改jQuery选择选择的输入文本字段以获取多个过滤器的不同信息。

我试过的代码是:

 <select   data-placeholder="Search..." multiple class="control-group chosen-select" chosen id='sl_edo'  style="width:200px;">
            <optgroup   ng-repeat="data in someFile[0].state | orderBy:'name'" label={{data.name}}>
                <option  value=""> </option>
                <option  ng-model="search" ng-repeat="city in data.city | orderBy:'name'">
                                  {{city.name}}</option>
            </optgroup>
  </select> 

我知道ng-model代码应该包含在html select 标记中,如下所示:

<select  ng-model="search" data-placeholder="Search..."  etc..

但是这不会过滤表中的结果,会发生什么是表空白,我不明白为什么,除非我退出过滤器,数据返回到表。我能做些什么来使代码按预期工作?

编辑:我一直在观看ng-model =“search”中的值是什么,到目前为止它们被视为如下数组: [“data1”,“data2 “...] (因为我在options标记上添加了 value = {{localidad.nombre}} ),如果我访问数组中的某个值,就像这样{{search [0]}},通常会像 data1 一样显示文字,但仍然没有过滤表格结果,表格空白,有关正在发生什么的任何想法?

编辑2 :我偶然发现了有关堆栈溢出的一些问题 How to filter multiple values (OR operation) in angularJS,这可能是个问题?我的意思是过滤器应该是多个。

2 个答案:

答案 0 :(得分:2)

请原谅我,如果这与你的事情不同,但我写了一个快速的例子。我认为这涵盖了你想要追求的内容。JsFiddle驱动你分配给选项标签的价值。

template<class It1, class It2, class OutputIt>
OutputIt merge_intervals(It1 first1, It1 last1,
                        It2 first2, It2 last2,
                        OutputIt destBegin)
{
    const auto begin1 = first1;
    const auto begin2 = first2;

    auto CombineData = [](const DataType& d1, const DataType& d2)
    {
        return DataType{d1.intervalStart, (d1.data+d2.data)};
    };

    for (; first1 != last1; ++destBegin)
    {
        if (first2 == last2)
        {
            return std::copy(first1, last1, destBegin);
        }

        if (first1->intervalStart == first2->intervalStart)
        {
            *destBegin = CombineData(*first1, *first2);
            ++first1; ++first2;
        }
        else if (first1->intervalStart < first2->intervalStart)
        {
            if (first2 > begin2)
                *destBegin = CombineData(*first1, *(first2-1));
            else
                *destBegin = *first1;
            ++first1;
        }
        else
        {
            if (first1 > begin1)
                *destBegin = CombineData(*first2, *(first1-1));
            else
                *destBegin = *first2;
            ++first2;
        }
    }
    return std::copy(first2, last2, destBegin);
}

答案 1 :(得分:1)

您想要的搜索模型中 search本身是关键值的对象。

<tr ng-repeat="data in someFile | filter:search.XXXX | orderBy:'name'">

XXXX是您尝试搜索的内容的属性名称。无论你有search.Guid / search.Name,无论你有什么。