У меня есть следующий код:
<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>
Интересно узнать, где проблема. Благодарю.
Проблема заключается в том, что последовательность вашего 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, вы можете попробовать включить этот скрипт перед выражением и проверить, разрешает ли он проблему.
Если у вас все еще есть проблемы, не стесняйтесь комментировать.