Как вызвать функцию javascript из элемента <td>внутри ng-repeat - PullRequest
0 голосов
/ 24 июня 2019

вызов угловой функции внутри ng-repeat td.Возьмите значение из td и замените его значением функции. Приведенный ниже код не работает.Тот же самый getCSTDateTime прибывает в таблицу вместо даты. Я хочу преобразовать системную дату в дату cst.Например:

<td id="txt">{{getCSTDateTime(document.lastUpdateDateTime)}}</td>

</tr>

Я искал в стеке над потоком и выполнил вышеуказанные шаги.И добавил эту функцию в $ Scope.Но все же эта функция не вызывает и не возвращает мое значение.

$scope.getCSTDateTime = getCSTDateTime;



 $scope.getCSTDateTime= function(lastUpdateDateTime) {
      var currentDate =lastUpdateDateTime;
      var cstDate;
      var hour;
      var minutes;
      var seconds;
      var jan = new Date(currentDate.getFullYear(), 0, 1);
      var jul = new Date(currentDate.getFullYear(), 6, 1);

      var  timezoneOffset =Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());

      // Check if daylight savings
      if (currentDate.getTimezoneOffset() < timezoneOffset) {
          // Adjust date by 5 hours
          cstDate = new Date(currentDate.getTime()-((1 * 60 * 60 * 1000) * 5));
        }
      else {
          // Adjust date by 6 hours
             cstDate = new Date(currentDate.getTime() - ((1 * 60 * 60 * 1000) * 6));
      }           
      hour = cstDate.getHours();
      minutes = cstDate.getMinutes();
      seconds = cstDate.getSeconds();
      m = checkTime(minutes);
      s = checkTime(seconds);
      //date:"MM/dd/yyyy h:mma" :'CDT'
      var month = cstDate.getUTCMonth() + 1; //months from 1-12
      var day = cstDate.getUTCDate();
      var year = cstDate.getUTCFullYear();
      document.getElementById('txt').innerHTML =      month + "/" + day + "/" +year +" "+h+":"+m;
};



    //var Date.prototype.stdTimezoneOffset = $( function () {

// var jan = new Date(this.getFullYear(), 0, 1);
       // var jul = new Date(this.getFullYear(), 6, 1);
      //  return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
    //});

    //Date.prototype.isDstObserved = function () {
       // return this.getTimezoneOffset() < this.stdTimezoneOffset();
    //}


var checkTime=$(function checkTime(i) {
      if (i < 10) {i = "0" + i};  // add zero in front of numbers < 10
      return i;
    });

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

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

измените эту строку:

document.getElementById('txt').innerHTML = month + "/" + day + "/" +year +" "+h+":"+m;

на:

return month + "/" + day + "/" +year +" "+h+":"+m;

ваша директива интерполяции {{}} удаляется .innerHTML, как только метод вызывается в первый раз ион никогда не будет обновляться дальше.

0 голосов
/ 24 июня 2019

Причина, по которой вы получаете тот же datetime, заключается в том, что вы не используете lastUpdateDateTime, который передается из вызова функции.

 {{ getCSTDateTime(document.lastUpdateDateTime)}}

$scope.getCSTDateTime= function() {....

Вам нужно воздействовать на аргумент, который передается функции

$scope.getCSTDateTime= function(lastUpdateDateTime) {.... get date calculations....

Расчеты, которые вы выполняете для этой даты / времени, должны затем быть возвращены в td для интерполяции.

И, как уже было отмечено, изменение innerHTML #txt не очень угловато- вы должны изменить значение, изменив данные, передаваемые модели, чтобы DOM мог обновляться при изменении данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...