2015-12-12 5 views
1

Я хочу таймер 1 минуты, который должен остановиться, как только он достигнет 1 минуты, и затем должен вызвать функцию. Для этого я использую директиву angular-timer.Директива углового таймера не работает

код, я использую в HTML является

<timer end-time="60000"> 
    {{days}} days, {{hours}} hours, {{minutes}} minutes, {{seconds}} seconds. 
</timer> 

я обеспечиваю время окончания в 60000 миллисекунд (1 минута) в атрибуте «конец времени». Но это не работает. Когда значение конечного времени равно «1451628000000», оно работает. Где я ошибаюсь? Также помогите мне в том, как вызвать функцию, когда таймер закончил.

Заранее спасибо.

+1

6000 миллисекунд - 6 секунд, а не 1 минута. –

+0

@Amir Моя ошибка. Но в течение 6 секунд тоже, его не работает –

ответ

0

Ваша ошибка проста и очень проста в установке. JavaScript всегда использует время в миллисекундах, поэтому 6000 эквалов до 6 секунд. Он должен работать, если вы попытаетесь это сделать:

<timer end-time="60000">{{days}} days, {{hours}} hours, {{minutes}} minutes, {{seconds}} seconds.</timer> 
1

end-time параметр принимает метку времени в миллисекундах. Ваш 60000 считается отметкой времени. Так что он уже остановлен.

Что вы можете сделать, это вычислить метку времени и добавить еще 60000 для настроек.

В контроллере:

$scope.endTime = (new Date()).getTime()+60*1000;

По мнению:

<timer end-time="{{endTime}}">{{days}} days, {{hours}} hours, {{minutes}} minutes, {{seconds}} seconds.</timer>

Я не совсем уверен, в каком формате вам нужно отобразить этот таймер, но для чего вы спросили, это будет делать.

Чтобы запустить функцию через определенный период времени, просто используйте службу $timeout внутри вашего контроллера. Inject $timeout и использовать его как setTimeout функция в JS.

$timeout(function() { 
    console.log('this will run after 1 minutes'); 
}, 60*1000); 

Для получения дополнительной информации, ознакомьтесь с $ таймаута documentation.

+1

Абсолютно верно –

1

Вы также можете использовать время обратного отсчета следующим образом.

Обратный отсчет таймера

<timer interval="1000" countdown="100">{{countdown}}</timer> 

начнет обратный отсчет от 100 до тех пор, пока не достигнет 0, помечая каждый второй

Эта разметка будет отображаться обратный отсчет времени в минутах и ​​секундах только. Этот атрибут можно применить и к обычным таймерам.

<timer countdown="10041" max-time-unit="'minute'" interval="1000"> 
    {{mminutes}} minute{{minutesS}}, {{sseconds}} second{{secondsS}} 
</timer> 

таймер обратного отсчета, который обновляет значение после того, как функция обратного вызова достигнутую

<timer countdown="3" interval="1000" finish-callback="callbackTimer.finished()"> 
    {{seconds}} second{{secondsS}} 
</timer> 
0

После Docs Угловое-Timer here, вы должны использовать комбинацию интервала, таймер обратного отсчета и финишного обратного вызова для достижения Вашего использование случай.

countdown - начать с этого числа и обратный отсчет до 0

interval - интервал, для которого экран будет обновляться. Поэтому, если вы используете интервал 1000, он будет обновляться каждую секунду (примерно)

finish-callback - вызов функции после завершения обратного отсчета.

<timer countdown="60" interval="1000" 
     finish-callback="myFinishCallback()"> 
    {{seconds}} second{{secondsS}} 
</timer> 
0

Вместо того чтобы использовать таймер в HTML тег, который является атрибутом его лучше использовать в angularjs как $timeout(callAtTimeout, 60000);, тогда, когда вы можете вызвать метод callAtTimeOut(), который может сделать вашу работу простой. Если лучше, вы можете добавить часы, если не знаете точного времени, когда произойдет запрос ajax для запроса.

Смежные вопросы