角度 ui 路由器的问题 - 我无法将过滤器应用于指令中的重复

Problems with angular-ui-router - I cannot apply a filter to a repeat in a directive

本文关键字:应用于 过滤器 指令 路由器 ui 问题 角度      更新时间:2023-09-26

我有一个问题,仅当我将指令作为角度 ui 路由器状态的一部分加载时才会发生。当我将指令直接添加到索引时.html一切都按预期工作。

这是一个 plunker,演示了我遇到的问题:http://plnkr.co/edit/EzvTOiSzaf6jjCsBKM1e?p=preview

我有一个返回对象数组的资源personResource
控制器personController查询资源,并将结果保存到$scope.people 中。
这将填充一个模板list-people.html该模板加载到指令listPeople 中。

我遇到的问题是另一个指令filterPeople其中包含带有过滤列表选项的单选按钮。

预期的结果是,如果我选择一个选项,它只会显示该行的值与选项值匹配的那些行。实际发生的是,无论我选择什么,都会显示所有数据

这是一个范围问题,您的模板有自己的子范围,这些子范围无法看到彼此中的值,因此当您在一个模板中设置personFilter.color时,使用它作为筛选器的模板不知道它。 您可以使用angularjs batarang或插入一个简单的绑定来调试这些问题(plnkr):

</tbody></table>personFilter json: {{personFilter|json}

若要解决此问题,可以在父作用域上设置 personFilter 对象,两个子级都将使用继承的对象。 只需意识到,如果在子作用域而不是属性上设置对象,则只会在一个子作用域上设置该值,而其他作用域将继续使用继承的对象。 您可能应该将控制器放在父控制器上。 您的控制器正在为内容和侧边栏实例化,因此即使侧边栏中未使用数据,您也会两次查询您的人员......