Как вызвать функцию JavaScript из HTML?

0

У меня есть следующий код:

<ion-content>
    <ion-list>
      <ion-item ng-repeat="x in names|orderBy:'order_id'">
        {{ x.order_id + ', ' + x.table_id+', '+x.name+', '+x.phone+', '+x.address+', '+x.remark+', '+myFunction(x.ctime)}}
      </ion-item>
    </ion-list>
  </ion-content>

Я хочу вызвать myFunction и получить возвращаемое значение, но оно не работает.

<script type="text/javascript">
function myFunction(ctime) {
    alert("Hello World!");

    // create a new javascript Date object based on the timestamp
    // multiplied by 1000 so that the argument is in milliseconds, not seconds
    var date = new Date(ctime*1000);
    // hours part from the timestamp
    var hours = date.getHours();
    // minutes part from the timestamp
    var minutes = "0" + date.getMinutes();
    // seconds part from the timestamp
    var seconds = "0" + date.getSeconds();

    // will display time in 10:30:23 format
    var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
    console.log("debug",formattedTime);
    return formattedTime;
}

</script>

Интересно узнать, где проблема. Благодарю.

  • 2
    Попробуйте + <script> myFunction (x.ctime) </ script>
  • 0
    @sajanyamaha, спасибо. но это не сработало ...
Показать ещё 5 комментариев
Теги:
ionic-framework

1 ответ

1
Лучший ответ

Проблема заключается в том, что последовательность вашего script, прикрепленная на вашей странице, и ваше оцениваемое expression.

В любом случае, создание глобальной функции JavaScript непосредственно в html файле не рекомендуется. Вы используете AngularJS, вы можете сделать функцию доступной в соответствующей scope, которая автоматически обработает это для вас.


У вас должен быть controller котором вы объявляли names массива объектов, которые должны выглядеть примерно так:

myApp.controller('NamesCtrl', ['$scope', function($scope) {
  $scope.names = [{order_id: 1, table_id: 4, name: "Someone"}];
}]);

Просто добавьте myFunction в область действия контроллера, например:

myApp.controller('NamesCtrl', ['$scope', function($scope) {
  $scope.names = [{order_id: 1, table_id: 4, name: "Someone"}];

  $scope.myFunction = function myFunction(ctime) {
    alert("Hello World!");

    // create a new javascript Date object based on the timestamp
    // multiplied by 1000 so that the argument is in milliseconds, not seconds
    var date = new Date(ctime*1000);
    // hours part from the timestamp
    var hours = date.getHours();
    // minutes part from the timestamp
    var minutes = "0" + date.getMinutes();
    // seconds part from the timestamp
    var seconds = "0" + date.getSeconds();

    // will display time in 10:30:23 format
    var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
    console.log("debug",formattedTime);
    return formattedTime;
  };
}]);

Выражение, через которое вы вызываете функцию, не нуждается в изменении.

Если вы хотите получить более подробную информацию об этой концепции, вы можете посмотреть здесь.


Если вы все еще хотите сохранить свой script на странице html, вы можете попробовать включить этот скрипт перед выражением и проверить, разрешает ли он проблему.

Если у вас все еще есть проблемы, не стесняйтесь комментировать.

  • 0
    спасибо @Kamran Ahmed, я определил myFunction до того, как позвоню, думаю, последовательность в порядке.
  • 0
    Почему не в рамках этого объекта? Попробуйте сделать это, это должно обязательно исправить это.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню