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

Countdown not allowing dynamic value #97

Open
analuisamartins opened this issue Jul 17, 2014 · 13 comments · May be fixed by #155
Open

Countdown not allowing dynamic value #97

analuisamartins opened this issue Jul 17, 2014 · 13 comments · May be fixed by #155

Comments

@analuisamartins
Copy link

Hi,
I've not found a way to add a dynamic(scope) value in attr countdown.
Ex: or (This way throws error in parsing)
To fix this I changed the module directive adding the last line:
(countdown: '=', and it works)

  scope: {
    interval: '=interval',
    startTimeAttr: '=startTime',
    endTimeAttr: '=endTime',
    countdownattr: '=countdown',
    countdown: '=',

I'm missing something? There is another way?
Thanks.

@Tasemu
Copy link

Tasemu commented Jul 18, 2014

I am also having this issue. I'm trying to put a scope variable into the countdown attribute and it fails with this error:

Error: [$parse:syntax] Syntax Error: Token 'selectedNotification.countdown' is unexpected, expecting [:] at column 3 of the expression [{{selectedNotification.countdown}}] starting at [selectedNotification.countdown}}].

@Tasemu
Copy link

Tasemu commented Jul 18, 2014

However the fix doesn't appear to be working for me.

@analuisamartins
Copy link
Author

The fix works without the {{ }}
Ex:
countdown="timeLimit"

@papasax
Copy link

papasax commented Dec 3, 2014

Same issue, same fix. The fix works without the {{ }}.
Why don't you ask for a pull?

@lukasz-kaniowski
Copy link

Ask for pull, please.

@pencilcheck
Copy link

$scope.$broadcast 'timer-set-countdown', secs

This works.

@simon-lang simon-lang linked a pull request Feb 18, 2015 that will close this issue
@FelixFortis
Copy link

Adding an ng-if worked for me, ensuring the variable was ready to go before the directive was rendered.

So from:

<timer end-time="myVariable">{{minutes}} minute{{minutesS}}</timer>

To:

<timer ng-if="myVariable" end-time="myVariable">{{minutes}} minute{{minutesS}}</timer>

My example hasn't been tested for countdown, but I'm pretty sure it will translate.

I don't think that adding countdown: '=' would be a good way to do things, as this is already set up with countdownattr: '=countdown', and it is countdownattr that does all the magic.

You just need to delay rendering the directive until the point in the $digest cycle when your variable has been evaluated with an ng-if.

Hope this helps.

EDIT:
More info on Angular's rendering cycle here: [ http://stackoverflow.com/questions/24615103/angular-directives-when-and-how-to-use-compile-controller-pre-link-and-post?rq=1 ]

@papasax
Copy link

papasax commented Apr 16, 2015

Yes this was the reason. The variable was not set yet. I fixed it using a django template variable instead of a angular variable which was not always set.
Your method with ng-if sounds good too.

@pencilcheck
Copy link

@FelixFortis I tried that before, but the problem with that is first off end-time doesn't work at all, second, the moment it is assigned it will start with whatever time that was last rendered, then takes about a sec to update to the current value, meaning you will get a 1 or 2 sec flash. So this is not optimal in my opinion.

@h3nr1ke
Copy link

h3nr1ke commented Jan 29, 2016

+1 for ng-if solution....

@wtczk
Copy link

wtczk commented Mar 7, 2016

works fine:
<timer ng-if="vm.countdown" countdown="vm.countdown"

NaN:
<timer countdown="vm.countdown"

+1 for ng-if solution

@Miljokodiyan
Copy link

+1 for ng-if solution ..i tried many ways except ng-if...Wowww its worked perfectly

@hdung912
Copy link

👍 for @wtczk it work for me thanks you :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

10 participants