Open haxxxton opened 8 years ago
I think there was a similar issue in #154
@CSchulz good pick up! title of the other issue didnt seem related, but the solution appears the same. Questions still stand, but happy to be merged/marked as duplicate if they can be added to the other issue.
Is there a reason that
$viewContentLoaded
is used instead of$stateChangeSuccess
? am i likely to encounter any issues with this?
@haxxxton 'When i changed all references to $stateChangeSuccess this solved the problem.'
How do you do that ? :)
@ptitdje45, i created a fork of this repo and did a find and replace for all instances of $viewContentLoaded
with $stateChangeSuccess
. It is currently failing on 3 tests as part of the Breadcrumb directive with multiple-interpolation conf
test
If this use case is not something you need to worry about, feel free to use my code here: https://github.com/haxxxton/angular-breadcrumb
@haxxxton Thanks buddy :)
What I find strange is that the directive and the service both have $rootScope
listen for $viewContentLoaded
, yet the handlers never fire. Yet, when I go into any controller of mine, inject $rootScope
, and have it listen for the same event (and use console.log
as the handler), the handler gets fired multiple times.
edit: On closer inspection, $viewContentLoaded
is getting fired off long before the listeners are bound.
My routing setup currently has an .otherwise()
rule set up to redirect to a child state temporarily while I set up routes properly. In this case, $stateChangeSuccess
never fires because the state never changes, and thus I have breadcrumbs with empty labels. I'm guessing that $viewContentLoaded
is used to try to handle both first-load and route change situations all at once, but clearly this isn't working completely.
@p0lar-bear did you have a go using my suggested change of $stateChangeSuccess
? it might be nice to see if that is a viable solution in other people's implementations
In my case, it wouldn't have done anything. It doesn't seem like $stateChangeSuccess
is fired when the app is first loaded and the initial state is determined.
I will keep this in mind for once my app's states are properly defined, though.
Also, I think it's prudent to call attention to the fact that these state change events were deprecated with ui-router v1.0. The ui-router team has provided polyfills for them, and while this is a valid stopgap, this breadcrumb module should be updated to use the transition hook API instead of these events.
I thing I have the same problem. For example, I have the breadcrum navigation : a > b > c a is the parent of b, b the parent of c Each state (a, b and c) have their own View and Controller. When a user navigate from a to b the Controller of b is triggered correctly. Same thing from b to c But when a user navigate from c to b, the Controller of b is never triggered.
@haxxxton I've tried 2 things : 1) in angular-breadcrumb.js I've replaced all instances of $viewContentLoaded with $stateChangeSuccess 2) I've used your implementation from your repo
In both cases it's not fixed anything.
Any idea ? Thanks
I was struggling to figure out why when toggling between child and parent states the breadcrumbs werent updating (they would stay as the page rendered them if deep linking into a child state, or at the parent state if going to a new 'root' state)
My state config looked like:
in the base template i used the breadcrumb directive
If i deep linked into
app.foo.add
the breadcrumbs would correctly showHome \ Foo \ Add
however, clicking on a button that usedui-sref="app.foo"
would leave the breadcrumbs as above.I realised that breadcrumbs triggers a re-render on
$viewContentLoaded
. Which wasnt being triggered when the states changed between child and parent views. When i changed all references to$stateChangeSuccess
this solved the problem.Is there a reason that
$viewContentLoaded
is used instead of$stateChangeSuccess
? am i likely to encounter any issues with this?