Skip to content

Latest commit

 

History

History
74 lines (54 loc) · 1.69 KB

0690-deprecate-attrs-in-templates.md

File metadata and controls

74 lines (54 loc) · 1.69 KB
stage start-date release-date release-versions teams prs project-link
recommended
2020-12-22 00:00:00 UTC
2021-03-22 00:00:00 UTC
ember-source
v3.26.0
framework
accepted

Deprecate using {{attrs}} in templates

Summary

The {{attrs}} object in templates is an alternative way for users to reference named arguments directly in a template.

{{attrs.foo}}

{{! is equivalent to }}
{{@foo}}

It was a legacy API that existed prior to named arguments being introduced in Ember, and has continued to be supported via a template transform for some time. This RFC proposes that we deprecate this functionality in favor of directly using named arguments.

Motivation

The {{attrs}} syntax was from a previous iteration of the concepts that eventually became named argument syntax. Now that named arguments exist in the framework, and are considered the best practice, there is no reason to continue supporting this syntax.

Transition Path

Users who currently rely on referencing {{attrs}} can convert their references to named arguments. This should be highly codemoddable, and we will attempt to make a codemod to help out with the transition.

How We Teach This

Deprecation Guide

The {{attrs}} object was an alternative way to reference named arguments in templates that was introduced prior to named arguments syntax being finalized. References to properties on {{attrs}} can be converted directly to named argument syntax.

Before:

{{attrs.foo}}
{{this.attrs.foo.bar}}
{{deeply (nested attrs.foobar.baz)}}

After:

 {{@foo}}
 {{@foo.bar}}
 {{deeply (nested @foobar.baz)}}

Drawbacks

  • None