Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove support for this.attrs #1016

Closed
wants to merge 5 commits into from
Closed
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions text/1016-deprecate-this-attrs-in-templates.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
stage: recommended
start-date: 2020-12-22T00:00:00.000Z
release-date: 2021-03-22T00:00:00.000Z
release-versions:
ember-source: v3.26.0

teams:
- framework
prs:
accepted: https://github.com/emberjs/rfcs/pull/1016
project-link:
---

# Deprecate using `{{attrs}}` and {{this.attrs}} in templates

## Summary

[RFC #690](https://github.com/emberjs/rfcs/pull/690) had some unfortunate timing where `{{attrs}}` was widely used, but before usage of `{{this.x}}` became widely common. As such, the deprecation messaging [implemented here](https://github.com/emberjs/ember.js/blob/0822efd9c0554f11d01232585596ac70c14a4306/packages/ember-template-compiler/lib/plugins/assert-against-attrs.ts#L58) only messaged in the case of `{{attrs}}`, rather than both `{{attrs}}` and `{{this.attrs}}`.


The RFC had intended, and even describes in its transition path to move away from `{{this.attrs}}`. [The code for the build time assertion](https://github.com/emberjs/ember.js/blob/0822efd9c0554f11d01232585596ac70c14a4306/packages/ember-template-compiler/lib/plugins/assert-against-attrs.ts#L84) even tried to handle the `{{this.attrs}}` case.


```hbs
{{attrs.foo}} and {{this.attrs.foo}}

{{! is equivalent to }}
{{@foo}} and {{@foo}}
Comment on lines +28 to +29
Copy link
Contributor

@MrChocolatine MrChocolatine Mar 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is less confusing

Suggested change
{{! is equivalent to }}
{{@foo}} and {{@foo}}
{{! are 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 immediately remove support for `{{this.attrs}}` in favor of named arguments.

## Motivation

The `{{attrs}}` / `{{this.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}}` or `{{this.attrs}}` can convert their references
to named arguments.

## How We Teach This

### Deprecation Guide

The deprecation guide from [3.26.0](https://deprecations.emberjs.com/v3.x#toc_attrs-arg-access) is already sufficient.

## Alternatives

pre-v6 deprecation.

## Drawbacks

- None
Loading