我有一个问题:如何从父控制器绑定属性?当md-selected-item
和md-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>
答案 0 :(得分:1)
它有效,你只需用它覆盖它:md-search-text="edc.task.project"
。这是一个引用,一旦清除输入字段,它将被设置为undefined或empty。因此,您的过滤器不会过滤。
第二个问题是因为你设置了md-selected-item
。一旦设置了一个,就需要清除输入,然后再次搜索自动完成。