Essa API privada é uma que eu uso com frequência em meus aplicativos para obter programaticamente o modelo da rota atual. É principalmente uma conveniência para this.modelFor(this.routeName)
¹. Isso é especialmente útil para escrever código de rota reutilizável que precisa chegar ao modelo da rota atual.
¹ Embora routeName
seja privado, consulte # 11759
: +1: super útil - quando vejo em uma rota this.modelFor('a.route.name')
eu sempre tenho que verificar novamente para ver se é o nome da rota atual ou não. Isso eliminaria essa fonte de confusão, especialmente parece que a melhor prática é fazer com que a rota manipule as ações manipulando seu próprio modelo e (idealmente) não o modelo de outra rota.
Discutimos isso na reunião da equipe principal esta tarde e decidimos que gostaríamos de manter a privacidade. Como você mencionou this.modelFor(this.routeName)
(acabei de sugerir # 11759 que devemos tornar this.routeName
públicos) é uma boa maneira de fazer isso com APIs públicas. Você também pode usar this.get('controller.model')
. Ambas as sugestões devem remover a ambigüidade com this.modelFor('a.b.c')
que @davidgoli mencionou ..
Obrigado por abrir o assunto para discussão. Vou encerrar agora que discutimos e decidimos manter a privacidade.
Parece bom, vou criar um apelido em ApplicationRoute
que é apenas currentModel: function () { return this.modelFor(this.routeName); }
porque é imensamente útil e uma pena que esteja sendo esquecido. Mas devemos continuar!
Comentários muito úteis
Parece bom, vou criar um apelido em
ApplicationRoute
que é apenascurrentModel: function () { return this.modelFor(this.routeName); }
porque é imensamente útil e uma pena que esteja sendo esquecido. Mas devemos continuar!