我正在编写一个Ember.js应用,并且使用查询参数遇到了一个小问题。
我有以下型号: 项目,类别和设计师。项目可以属于单个类别,并且有多个设计师。
我在项目控制器上使用计算属性来根据选择的类别或设计器过滤掉项目。一切都很好,除了以下内容:
有一个类别列表(链接到'项目'路由,其中category.slug作为查询参数),我用它来过滤项目{{#link-to 'projects' (query-params category=category.slug)}}
,例如{{1} }。在该列表的顶部,我放置了一个链接,通向一个干净的项目'希望能重置/删除“类别”的路线。查询参数,但该链接似乎总是导致'项目'具有当前活动查询参数的路由。因此,例如,如果我正在查看#/projects?category=product
干净的项目'路线链接和项目(查询参数...)'链接表现为活动链接,这是一个问题。
我知道这可以通过在" clean"的链接到帮助器中放置类别参数的默认值来解决这个问题。路线,但我想避免这种情况,因为设置#/projects?category=product
或类似的东西对我来说有点奇怪。有没有办法通过使用链接帮助程序强制查询参数消失?我知道可以通过在控制器上创建一个动作并将查询参数相关属性设置为null来完成它,但它仍然不是一个优雅的解决方案,因为我必须伪造一个链接。
此外,如果有第二个设计师列表,它们以相同的方式工作,那么查询参数的最简单方法就是“' category'或者只是设计师',但不是两者兼而有之?我希望避免在此用例中使用粘性参数,因此不像category='all'
。
谢谢!
答案 0 :(得分:5)
正如his post在EmberJS话语中提出的 andyhot ,我做了以下工作以获得我需要的内容:
为默认值添加控制器属性:
defaultCategory: null
然后在link-to helper
中(query-params category=defaultCategory)
这是一种解决方法,但可以解决问题。
答案 1 :(得分:5)
更新的答案应为
(query-params category="null")
请注意,null
将作为字符串传递。