md-autocomplete Angular 1.x - 从父控制器绑定数据

时间:2016-12-13 15:33:51

标签: angularjs angular-material

我有一个问题:如何从父控制器绑定属性?当md-selected-itemmd-search-text是来自AddTaskController的属性(即at.task.project)时,自动填充功能正常(返回匹配的元素)。当我尝试绑定来自父级的数据 - md-items | filter:edc.task.project时 - 无法正常工作(过滤器返回所有元素而不是匹配项)    http://plnkr.co/edit/ZCIU5gNwWfWdIOnz0ykb

<div ng-controller="EditTaskDialogController as edc">        
      <!-- autocomplete fields -->
          <div layout="row" ng-controller="AddTaskController as at">
            <!-- project autocomplete -->
            <div >
              <md-autocomplete required md-no-asterisk
                              md-input-name="project"
                              md-selected-item="edc.task.project"
                              md-search-text-change="at.searchProjectChange(edc.task.project)"
                              md-search-text="edc.task.project"
                              md-selected-item-change="at.selectedProjectChange(item)"
                              md-items="item in at.profile.projects | filter:edc.task.project"
                              md-item-text="item"
                              md-min-length="0"
                              md-input-minlength="0"
                              md-floating-label="Projekt...">
                          <md-item-template>
                              <span md-highlight-text="edc.task.project" md-highlight-flags="^i">{{item}}</span>
                          </md-item-template>
                          <div ng-messages="editTaskForm.project.$error" role="alert">
                              <div ng-message="required">Pole nie może być puste.</div>
                          </div>
              </md-autocomplete>

            </div>
    </div>

1 个答案:

答案 0 :(得分:1)

它有效,你只需用它覆盖它:md-search-text="edc.task.project"。这是一个引用,一旦清除输入字段,它将被设置为undefined或empty。因此,您的过滤器不会过滤。

第二个问题是因为你设置了md-selected-item。一旦设置了一个,就需要清除输入,然后再次搜索自动完成。