Я создаю хром-приложение с USB-устройством. В моем основном app.js я хочу всегда проверять, когда устройство добавлено/удалено и изменит URL.
angular.module('rfApp', [
'ngRoute',
'ngMaterial',
'rfApp.view1',
'rfApp.view2',
'rfApp.device_not_found'
]).config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) {
$locationProvider.hashPrefix('!');
function checkForDevices() {
RFFWHID.getDevices(function(current_devices) {
if(current_devices.length > 0) {
$routeProvider.otherwise({redirectTo: '/view1'});
} else {
$routeProvider.otherwise({redirectTo: '/device_not_found'});
}
});
}
chrome.hid.onDeviceAdded.addListener(function(){
checkForDevices();
});
chrome.hid.onDeviceRemoved.addListener(function(){
checkForDevices();
});
checkForDevices();
}]);
Но перенаправление не работает в функции async.
Edit:
Я нашел подобный вопрос How to call $urlRouterProvider.otherwise() after loading JSON file?, и первый ответ описывает, что это невозможно. Но как я могу решить эту проблему. Мне нужно проверить, чтобы usb удалял/добавлял глобально и менял представления на основе этого.
спасибо за ответ, но он не работает :(Так что, когда USB-устройство добавлено, я должен сделать это 'if (deviceManager.isDeviceConnected()), а затем сделать перенаправление для просмотра. – Arti
@Arti Когда устройство подключено, выполните 'checkForDevices', вы используете' isDeviceConnected', чтобы проверить синхронизацию, если есть хотя бы одно устройство, не дожидаясь 'RFFWHID.getDevices'. Извините, но у меня не было возможности проверить его, это просто Например, чтобы дать вам представление о подходе, который вы могли бы выполнить. Btw, есть ли у вас какие-либо ошибки? Почему он не работает? Может быть, я могу его улучшить. – pietrovismara
проблема с этим ударом '$ rootScope. $ on ('$ routeChangeSuccess «только один раз, когда я меняю URL-адреса. Но когда я запускаю приложение и удаляю устройство, он запускает« chrome.hid.onDeviceRemoved »и мой url должен измениться – Arti