You can always create functions that refer to the private element:
MyObject.prototype.id = function(){return this._id;};
Which gives you: leagues/{{ league.id() }}
MyObject.prototype.id = function(){return this._id;};
Which gives you: leagues/{{ league.id() }}
A breaking change like that shoved at the latest minute? you bet it is.
The pull request was opened 3 weeks ago with plenty of discussion.
Opt-in security features aren't very useful.
> class based controllers are optional yet,because of them you introduce a feature that affect function based controllers ?
That's how competing constraints work out sometimes.
We're always looking to improve though. The code is open source, so feel free to submit a PR or fork it if you disagree. :)