md-autocomplete项目列表?

4

我有一个网格 UI,其中每个单元格是 Angular Material 的 md-autocomplete

我写了一个演示:codepen,在其中运行(仅用于模拟)ng-repeat 并尝试为每一行选择不同的值。

但是,无论我做什么更改一个项时,所有其他行也会更改。我做错了什么?

我的HTML:

 <tr  layout="row" ng-repeat="item in ctrl.items" flex>
        <td class="sc_color" flex>{{$index+1}}.color</td>
        <td flex>
            <md-autocomplete style="margin-bottom:10px;"
        md-selected-item="item.selectedItem"
        md-search-text="ctrl.searchText"
        md-items="item in ctrl.querySearch(ctrl.searchText)"
        md-item-text="item.display"
        md-min-length="0"
        placeholder="Pick a color">
    <md-item-template>
        <span md-highlight-text="ctrl.searchText" md-highlight-flags="^i">{{item.display}}</span>
    </md-item-template>
</md-autocomplete>
        </td>
    </tr>

我的项目

self.items = [
      {
        selectedItem: 'aa'
      },
       {
        selectedItem: 'bbb'
      }
    ];  

我使用md-selected-item,但似乎对所有项目都是相同的。

3个回答

7

这是因为所有的字段都链接到同一个变量ctrl.searchtext

只需要改变这个:

md-search-text="ctrl.searchText"
md-items="item in ctrl.querySearch(ctrl.searchText)"

通过这个方法

md-search-text="ctrl['searchText' + $index]"
md-items="item in ctrl.querySearch(ctrl['searchText' + $index])"

Codepen : http://codepen.io/anon/pen/dMPLMb


2
太好了,我以为我错过了什么。我认为md-selected-item是一个模型。 - snaggs
如果我想从列表中删除“白色”,因为它已经在另一个列表中被选择了。例如,我选择了“白色”作为第一个选择,那么在第二个列表中你将看不到“白色”颜色,因为它已经被选择了。 - GeoCom

1

不要使用,可以像这样使用作用域变量

md-search-text="searchQuery"
md-items="item in ctrl.querySearch(searchQuery)"

在这种情况下,它使用md-autocomplete作用域,您不再需要担心查询变量。@pbenard的解决方案适用于没有分页或您不在第一个索引处插入新项目的列表。

0

codepen演示我使用了md-autocomplete、日期选择器、ng-repeat、tab和md-select来制作这个。

不要像上面的解决方案那样使用$index,它会与其他选项卡的自动完成功能混淆。

正确的方法非常简单,只需使用两个深层模型即可。

             $scope.RemoveTreeList = [
                                        {
                                            //'count':5,
                                            'location':'uuuuuuu',
                                            'note':'SHAMEL ASH',
                                            //'selectedSpecie':{'originalObject': {'code': '', name: ''}},
                                            'selectedItem':'aaaaaaaaaaaa'


                                        },
                                        {
                                            //'count':2,
                                            'location':'iiiiiiiiii',
                                            'note':'CAMPHOR TREE',
                                            //'selectedSpecie':{'originalObject': {'code': '', name: ''}},
                                            'selectedItem':'bbbbbbbbbbbbb'
                                        },
                                        {
                                            //'count':1,
                                            'location':'ppppppp',
                                            'note':'PECAN',
                                            //'selectedSpecie':{'originalObject': {'code': '', name: ''}},
                                            'selectedItem':'ccccccccccccc'
                                        }];



 <div ng-repeat="RemoveTree in RemoveTreeList">  

 md-selected-item="RemoveTree.selectedItem" 

 md-search-text="RemoveTree.searchText"

 md-items="item in ctrl.querySearch(RemoveTree.searchText)"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接