我有问题:如何绑定父控制器的属性?当md-selected-item
和md-search-text
是AddTaskController
(即at.task.project
)的属性时,AutoComplete可以正常工作(返回匹配的元素)。当我尝试绑定父的数据时-md-items | filter:edc.task.project
-无法正常工作(过滤返回所有元素而不是匹配的项目) http://plnkr.co/edit/zciu5gnwwwfwdionz0ykb
<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>
它有效,您只是在用它覆盖它: md-search-text="edc.task.project"
。这是一个参考,一旦您清除输入字段,它将设置为未定义或空的。结果,您的过滤器不会过滤。
第二个问题是因为您设置了md-selected-item
。一旦设置了一个,就需要在AutoComplete再次搜索之前清除输入。