Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 28.12.2015, 22:13
Аспирант
Отправить личное сообщение для kingstakh Посмотреть профиль Найти все сообщения от kingstakh
 
Регистрация: 21.02.2014
Сообщений: 37

Сообщение от рони
как правильно написать данный код и как обновляют данные в angular?
Спасибо, Рони, именно это я и хотел. А по вопросу с обновлением данных попробую спросить в ветке по AngularJS или не стоит плодить темы?
Ответить с цитированием
  #22 (permalink)  
Старый 28.12.2015, 22:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

kingstakh,
лучше бы вы сразу в той теме написали думаю и тут заметят.
Ответить с цитированием
  #23 (permalink)  
Старый 28.12.2015, 22:50
Аспирант
Отправить личное сообщение для kingstakh Посмотреть профиль Найти все сообщения от kingstakh
 
Регистрация: 21.02.2014
Сообщений: 37

Сообщение от рони Посмотреть сообщение
kingstakh,
лучше бы вы сразу в той теме написали думаю и тут заметят.
Просто здесь давно обсуждают схожий вопрос, поэтому тут и спросил, чтобы "по шапке" не получить ))). Если никто тут не заметит рискну спросить там )))
Ответить с цитированием
  #24 (permalink)  
Старый 28.12.2015, 22:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

kingstakh,
ок.
Ответить с цитированием
  #25 (permalink)  
Старый 29.12.2015, 10:24
Аспирант
Отправить личное сообщение для kingstakh Посмотреть профиль Найти все сообщения от kingstakh
 
Регистрация: 21.02.2014
Сообщений: 37

Сообщение от рони Посмотреть сообщение
kingstakh,
ок.
Для меня 2 новости, одна хорошая, вторая плохая )))
Хорошая новость, что в приложении обновление данных работает, то есть идет обратный отсчет времени. Плохая, данные JSON у меня не разделяются кавычками.

То есть в примере:
$scope.json = '["12:00", "12:10", "12:35", "23:37"]';


А у меня:
$scope.json = '["12:00, 12:10, 12:35, 23:37"]';


Где исправить код, чтобы работало с моей строкой?

Решено, додумался, спасибо!

Последний раз редактировалось kingstakh, 29.12.2015 в 10:32. Причина: Проблема решена
Ответить с цитированием
  #26 (permalink)  
Старый 29.12.2015, 10:57
Аспирант
Отправить личное сообщение для kingstakh Посмотреть профиль Найти все сообщения от kingstakh
 
Регистрация: 21.02.2014
Сообщений: 37

Может кому-то понадобиться, мой вариант

<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
  <meta charset="utf-8">
  <title>Расписание</title>
<script>
 var c = {
    formatTime: function(b) {
        b = Math.floor(b / 1E3);
        var a = Math.floor(b / 60),
            d = Math.floor(a / 60);
        b %= 60;
        a %= 60;
        return c.two(d % 24) + " час. " + c.two(a) + " мин. " + c.two(b) + " сек. "
    },
    two: function(b) {
        return (9 < b ? "" : "0") + b
    }
};
angular.module("app", [])
  //Часы
.controller("TimeCtrl", function($scope, $interval) {
  var tick = function() {
    $scope.clock = Date.now();
  }
  tick();
  $interval(tick, 1000);
})

.controller("TabsDemoCtrl", function($scope) {
    $scope.json = '6:00, 8:45, 12:00, 12:10, 12:35, 23:37'; // Парсинг в другом контроллере, поэтому данные имеют такой вид
    $scope.arrString = new Array();
    $scope.arrString = $scope.json.split(',');
    $scope.myArray = [];
    $scope.fn = function ()
    {
       $scope.myArray = [];
       angular.forEach($scope.arrString,
       function(el) {
        el = el.match(/\d+/g);
        var date = new Date;
        date.setHours(+el[0], +el[1],0,0);
        date = date.getTime() - (new Date).getTime();
        $scope.myArray.push(date < 0 ? "Автобус ушел" : "Осталось : " + c.formatTime(date));

    })

      console.log($scope.myArray)
      window.setTimeout($scope.fn,1000) // Вывод данных в приложении работает
    }
   $scope.fn()

});
</script>
</head>
<body>
<h3 ng-controller="TimeCtrl">Сейчас {{ clock | date:'HH:mm:ss'}}</h3>
  <ul ng-controller="TabsDemoCtrl">
    <li ng-repeat="bustime in arrString track by $index">
       {{bustime + ' ' +myArray[$index]}}
    </li>
</ul>

</body>
</html>

Последний раз редактировалось kingstakh, 29.12.2015 в 11:33. Причина: Исправление ошибки
Ответить с цитированием
  #27 (permalink)  
Старый 29.12.2015, 11:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

kingstakh,
хотелось бы увидеть обновление времени или узнать почему в посте 20 не работает вывод времени.
Ответить с цитированием
  #28 (permalink)  
Старый 29.12.2015, 11:18
Аспирант
Отправить личное сообщение для kingstakh Посмотреть профиль Найти все сообщения от kingstakh
 
Регистрация: 21.02.2014
Сообщений: 37

Сообщение от рони Посмотреть сообщение
kingstakh,
хотелось бы увидеть обновление времени или узнать почему в посте 20 не работает вывод времени.
Не работает в браузере, в телефоне - работает. Я ничего не менял в этой строке. Может это потому, что в приложении подключен jQuery, а в примере нет

А нет, jQuery не играет роли, у меня еще контроллер текущего времени есть, с ним и здесь все заработало

Последний раз редактировалось kingstakh, 29.12.2015 в 11:30.
Ответить с цитированием
  #29 (permalink)  
Старый 29.12.2015, 12:04
Аспирант
Отправить личное сообщение для kingstakh Посмотреть профиль Найти все сообщения от kingstakh
 
Регистрация: 21.02.2014
Сообщений: 37

Рабочий вариант с $interval

<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
  <meta charset="utf-8">
  <title>Расписание</title>
<script>
 var c = {
    formatTime: function(b) {
        b = Math.floor(b / 1E3);
        var a = Math.floor(b / 60),
            d = Math.floor(a / 60);
        b %= 60;
        a %= 60;
        return c.two(d % 24) + " час. " + c.two(a) + " мин. " + c.two(b) + " сек. "
    },
    two: function(b) {
        return (9 < b ? "" : "0") + b
    }
};
angular.module("app", [])

.controller("TabsDemoCtrl", function($scope, $interval) {
    $scope.json = '6:00, 8:45, 12:00, 12:10, 12:35, 23:37'; // Парсинг в другом контроллере, поэтому данные имеют такой вид
    $scope.arrString = new Array();
    $scope.arrString = $scope.json.split(',');
    $scope.myArray = [];

    var tick = function() {
      $scope.clock = Date.now();
    }
    tick();
    $interval(tick, 1000);

    $scope.fn = function ()
    {
       $scope.myArray = [];
       angular.forEach($scope.arrString,
       function(el) {
        el = el.match(/\d+/g);
        var date = new Date;
        date.setHours(+el[0], +el[1],0,0);
        date = date.getTime() - (new Date).getTime();
        $scope.myArray.push(date < 0 ? "Автобус ушел" : "Осталось : " + c.formatTime(date));

    })

      console.log($scope.myArray)
      window.setTimeout($scope.fn,1000) // Вывод данных в приложении работает
    }
   $scope.fn()

});
</script>
</head>
<body>
  <ul ng-controller="TabsDemoCtrl">
    <li ng-repeat="bustime in arrString track by $index">
       {{bustime + ' ' +myArray[$index]}}
    </li>
</ul>

</body>
</html>
Ответить с цитированием
  #30 (permalink)  
Старый 04.01.2016, 16:44
Аспирант
Отправить личное сообщение для kingstakh Посмотреть профиль Найти все сообщения от kingstakh
 
Регистрация: 21.02.2014
Сообщений: 37

Сообщение от рони Посмотреть сообщение
kingstakh,
хотелось бы увидеть обновление времени или узнать почему в посте 20 не работает вывод времени.
У меня снова "грабли". Пример работает, все отлично, но у меня на одной странице расписание на рабочие и выходные дни, поэтому два "потока" данных. С одним, как в примере, работает, но когда дублирую функция для второго - зависает.

<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
  <meta charset="utf-8">
  <title>Расписание</title>
<script>
 var c = {
    formatTime: function(b) {
        b = Math.floor(b / 1E3);
        var a = Math.floor(b / 60),
            d = Math.floor(a / 60);
        b %= 60;
        a %= 60;
        return c.two(d % 24) + " час. " + c.two(a) + " мин. " + c.two(b) + " сек. "
    },
    two: function(b) {
        return (9 < b ? "" : "0") + b
    }
};
angular.module("app", [])
  //Часы
.controller("TimeCtrl", function($scope, $interval) {
  var tick = function() {
    $scope.clock = Date.now();
  }
  tick();
  $interval(tick, 1000);
})

.controller("TabsDemoCtrl", function($scope) {
    $scope.work = '6:00, 8:45, 12:00, 12:10, 12:35, 23:37'; // Рабочие дни
    $scope.weekend = '6:00, 8:45, 12:00, 12:10, 12:35, 23:37'; // Выходные дни 
    $scope.arrString = new Array();
    $scope.arrString = $scope.work.split(',');
    $scope.myArray = [];
    $scope.fn = function ()
    {
       $scope.myArray = [];
       angular.forEach($scope.arrString,
       function(el) {
        el = el.match(/\d+/g);
        var date = new Date;
        date.setHours(+el[0], +el[1],0,0);
        date = date.getTime() - (new Date).getTime();
        $scope.myArray.push(date < 0 ? "Автобус ушел" : "Осталось : " + c.formatTime(date));

    })

      console.log($scope.myArray)
      window.setTimeout($scope.fn,1000) // Вывод данных в приложении работает
    }
   $scope.fn()

});
</script>
</head>
<body>
<h3 ng-controller="TimeCtrl">Сейчас {{ clock | date:'HH:mm:ss'}}</h3>
  <ul ng-controller="TabsDemoCtrl">
    <li ng-repeat="bustime in arrString track by $index">
       {{bustime + ' ' +myArray[$index]}}
    </li>
</ul>
  <ul ng-controller="TabsDemoCtrl">
Здесь для выходных дней
    <li ng-repeat="bustime in arrString track by $index">
       {{bustime + ' ' +myArray[$index]}}
    </li>
</ul>

</body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт обратного отсчета времени Extremal1989 Общие вопросы Javascript 13 30.12.2012 11:47
Циклический отсчет времени Vor Серверные языки и технологии 0 24.02.2012 02:56
вывод времени php + javascript TTongorovortoto Ваши сайты и скрипты 2 29.10.2011 00:11
В зависимости от локального времени меняется задний фон Tchort Events/DOM/Window 3 09.08.2011 18:21
Обратный отсчет времени tenorica Общие вопросы Javascript 2 19.04.2011 23:30