Как предупредить об ошибке импорта файла сетки angular?

Я использую angular UI Grid для импорта файла.
Я использую:

enableGridMenu: true,
importerDataAddCallback: function (grid, newObjects) {

Когда я импортирую файл, не являющийся CSV, я получаю сообщение об ошибке:

неперехваченное исключение: UNEXPECTED_END_OF_RECORD в char ...

Я хотел бы получить всплывающее окно с предупреждением, если импорт работает некорректно.
Я нашел uiGridImporterService, у которого есть метод alertError (grid, headerRow).
Я не уверен, что это то, что мне нужно.

Итак, как мне добавить оповещение, если оно не работает?
В качестве дополнительного вопроса, могу ли я проверить, что он импортирует файл .csv?


person Jon Kennedy    schedule 15.09.2015    source источник
comment
можно ли использовать $q для создания обещания, которое может возвращать err?   -  person Joe Lloyd    schedule 16.09.2015
comment
Возможно. Ui-grid-importer встроен в функциональность ui-grid, поэтому я действительно не знаю, куда бы я попытался поместить $ q. Функция importerDataAddCallback доступна, но только после того, как файл будет признан исправным. До этого я не знал, где получить доступ к процессу импорта.   -  person Jon Kennedy    schedule 16.09.2015


Ответы (2)


Вот код, предупреждающий о неудачном импорте CSV:

CSV.error = function (err){
    var msg = CSV.dump(err);
    CSV.reset();
    //alert("CSV import failed.");
    toastr["error"]("Import failed.");
    throw msg;
};
person Jon Kennedy    schedule 24.11.2015

Используйте $ q

Используя $ q, вы можете вернуть обещание, которое может не пройти или пройти. В случае неудачи в вашем случае вы можете вызвать всплывающее уведомление.

Пример

Взято из документации по AngularJS.

return $q(function(resolve, reject) {
  setTimeout(function() {
    if (okToGreet(name)) {
      resolve('Hello, ' + name + '!');
    } else {
      reject('Greeting ' + name + ' is not allowed.');
    }
  }, 1000);
});

При возврате невыполненных обещаний у вас может появиться всплывающее окно с предупреждением, чтобы сообщить пользователю, что действие не удалось.

person Joe Lloyd    schedule 15.09.2015