Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Custom directives with names ending "Start" or "End" will silently fail to compile #7336

Closed
zackbrown opened this issue May 2, 2014 · 1 comment

Comments

@zackbrown
Copy link

Most likely related to: e46100f

Might save some frustrating debugging if angularjs throws an exception when a /._Start$/ or /._End$/ directive is declared?

@caitp
Copy link
Contributor

caitp commented May 2, 2014

It is because of that, and I wrote a fix for this a while ago, #5372 --- so this is basically a duplicate issue. I can try to get that reviewed better for the next release, I guess

@caitp caitp closed this as completed May 2, 2014
caitp added a commit that referenced this issue Jul 16, 2014
Directives which expect to make use of the multi-element grouping feature introduced in
1.1.6 (e46100f7) must now add the property multiElement
to their definition object, with a truthy value.

This enables the use of directive attributes ending with the words '-start' and '-end' for
single-element directives.

BREAKING CHANGE: Directives which previously depended on the implicit grouping between
directive-start and directive-end attributes must be refactored in order to see this same behaviour.

Before:

```
<div data-fancy-directive-start>{{start}}</div>
  <p>Grouped content</p>
<div data-fancy-directive-end>{{end}}</div>

.directive('fancyDirective', function() {
  return {
    link: angular.noop
  };
})
```

After:

```
<div data-fancy-directive-start>{{start}}</div>
  <p>Grouped content</p>
<div data-fancy-directive-end>{{end}}</div>

.directive('fancyDirective', function() {
  return {
    multiElement: true, // Explicitly mark as a multi-element directive.
    link: angular.noop
  };
})
```

Closes #5372
Closes #6574
Closes #5370
Closes #8044
Closes #7336
ckknight pushed a commit to ckknight/angular.js that referenced this issue Jul 16, 2014
Directives which expect to make use of the multi-element grouping feature introduced in
1.1.6 (angular@e46100f7) must now add the property multiElement
to their definition object, with a truthy value.

This enables the use of directive attributes ending with the words '-start' and '-end' for
single-element directives.

BREAKING CHANGE: Directives which previously depended on the implicit grouping between
directive-start and directive-end attributes must be refactored in order to see this same behaviour.

Before:

```
<div data-fancy-directive-start>{{start}}</div>
  <p>Grouped content</p>
<div data-fancy-directive-end>{{end}}</div>

.directive('fancyDirective', function() {
  return {
    link: angular.noop
  };
})
```

After:

```
<div data-fancy-directive-start>{{start}}</div>
  <p>Grouped content</p>
<div data-fancy-directive-end>{{end}}</div>

.directive('fancyDirective', function() {
  return {
    multiElement: true, // Explicitly mark as a multi-element directive.
    link: angular.noop
  };
})
```

Closes angular#5372
Closes angular#6574
Closes angular#5370
Closes angular#8044
Closes angular#7336
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants