重置/删除Ember.js查询参数和链接到帮助程序问题

Mar*_*jan 6 ember.js

我正在编写一个Ember.js应用程序并使用查询参数遇到了一个小问题.

我有以下模型:项目,类别和设计师.项目可以属于单个类别,并且具有多个设计者.

我在我的项目控制器上使用计算属性来根据选择的类别或设计器过滤掉项目.一切都很好,除了以下内容:

有一个类别列表(链接到'项目'路线,category.slug作为查询参数),我用它来过滤项目{{#link-to 'projects' (query-params category=category.slug)}},例如#/projects?category=product.在该列表的顶部,我放置了一个链接,该链接导致干净的"项目"路线,希望重置/删除"类别"查询参数,但该链接似乎总是导致具有当前活动查询参数的"项目"路径.因此,例如,如果我正在查看#/projects?category=product干净的"项目"路由链接,并且"项目(查询 - 参数...)"链接表现为活动链接,这是一个问题.

我知道这可以通过在"干净"路线的链接帮助器中放置类别参数的默认值来解决,但我想避免这种情况,因为设置category='all'或类似的东西对我来说有点奇怪.有没有办法通过使用链接帮助程序强制查询参数消失?我知道可以通过在控制器上创建一个动作并将查询参数相关属性设置为null来完成它,但它仍然不是一个优雅的解决方案,因为我必须伪造一个链接.

此外,如果有第二个设计师列表,它们以相同的方式工作,那么查询参数的最简单方法只是"类别"或仅"设计者",而不是两者兼而有之?我想在这个用例中避免使用粘性参数,所以没什么#/projects?category=product&designer=john.

谢谢!

Mar*_*jan 5

正如andyhot关于EmberJS话语的帖子中所说,我做了以下事情来得到我需要的东西:

为默认值添加控制器属性:

defaultCategory: null
Run Code Online (Sandbox Code Playgroud)

然后在link-to helper中

(query-params category=defaultCategory)
Run Code Online (Sandbox Code Playgroud)

这是一种解决方法,但可以解决问题.


axs*_*uul 5

更新的答案应该是

(query-params category="null")
Run Code Online (Sandbox Code Playgroud)

请注意,它将null作为字符串传递.