Ember.js: 考虑在 `Ember.Route` 中公开 `currentModel`

创建于 2015-07-15  ·  4评论  ·  资料来源: emberjs/ember.js

这个私有 API 是我在我的应用程序中经常使用的一个,以编程方式获取当前路由的模型。 对于this.modelFor(this.routeName) ¹ 来说,这主要是一种方便。 这对于编写需要获取当前路由模型的可重用路由代码特别有用。

¹ 虽然routeName是私有的,但请参阅 #11759

最有用的评论

听起来不错,然后我将在ApplicationRoute中创建一个别名,即currentModel: function () { return this.modelFor(this.routeName); }因为它非常有用,但很遗憾它被忽视了。 但我们要继续!

所有4条评论

:+1: 超级有用 - 当我在路线this.modelFor('a.route.name')中看到时,我总是必须仔细检查它是否是当前路线的名称。 这将消除混淆的根源,尤其是似乎最佳实践是通过操纵自己的模型来让路由处理操作,并且(理想情况下)不是其他路由的模型。

在今天下午的核心团队会议上讨论了这个问题,并决定我们希望将其保密。 正如你提到的this.modelFor(this.routeName) (我刚刚在 #11759 上插话,我们应该公开this.routeName )是使用公共 API 做到这一点的好方法。 您也可以使用this.get('controller.model') 。 这两个建议都应该消除@davidgoli提到的this.modelFor('a.b.c')歧义

感谢您打开问题进行讨论,既然我们已经讨论并决定保密,我将结束。

听起来不错,然后我将在ApplicationRoute中创建一个别名,即currentModel: function () { return this.modelFor(this.routeName); }因为它非常有用,但很遗憾它被忽视了。 但我们要继续!

此页面是否有帮助?
0 / 5 - 0 等级