На nginx/apache проксируете настраиваете домен и проксируете на нужный вам порт.
Без nginx/apache можно сразу настроить listen сервера на 80 порт и он будет доступен по домену, который ссылается на этот сервер.
На iPad не может быть событий mouseover/mouseleave, т.к. там нет мышки.
Вам надо добавить функцию click, по которой показывался бы блок, и по клику вне блока → скрывать этот блок.
var year = prompt('Write a number');
if (year.replace(/\s/g, '').length === 0 || isNaN(year)) {
alert('Нужно писать число!');
} else {
alert('Вы полностью правы!');
}
Потому что он асинхронный (success).
Вызывайте функцию, которая будет работать с данными из success и передавайте туда data.
Пример:
var workIngWithData = function(dataObj) {
console.info(dataObj);
// Здесь можно работать с data
};
$http.get('data/category.json').success(function(data) {
$scope.category = data;
workIngWithData(data);
});