У меня возникла странная проблема в очень простом проекте с использованием гибридных приложений для нескольких устройств в Visual Studio 2013 Update 2 с Apache Cordova и AngularJS. Я настроил маршрутизацию с помощью модуля ngRoute, определил div с помощью директивы ngView и просто хочу перейти на другую страницу по коду, используя службу angular $location.
Мой звонок выглядит так:
$location.path('/home');
Маршрутизация (и определение модуля) настроена следующим образом:
var app = angular.module('tk', ['ngRoute']);
app.config(function ($routeProvider) {
$routeProvider.when('/home', {
templateUrl: '/app/views/home/home.html',
controller: 'homeController'
});
$routeProvider.when('/login', {
templateUrl: '/app/views/login/login.html',
controller: 'loginController'
});
});
Когда код выполняется, вид не меняется! Тот же код отлично работает в Ripple, но я не могу заставить его работать в отладчике Android.
Я использую Android 4.4.2 - уровень API 19 на ARM (armeabi-v7a).
Когда вызов $location.path('/home')
выполняется, я вижу в отладчике, что свойство absUrl службы $location меняет свое значение с «file:///android_asset/www/index.html» на «file:///android_asset/www /index.html#/home", но это все. Никакой навигации к представлению не происходит.
Я что-то пропустил полностью?
изменить 1: В консоли Java Script я заметил следующие сообщения:
Failed to load resource File: home.html,
Line: 0, Column: 0
deviceready has not fired after 5 seconds. File: cordova.js,
Line: 1128, Column: 17
Channel not fired: onPluginsReady File: cordova.js,
Line: 1121, Column: 21
Channel not fired: onCordovaReady File: cordova.js,
Line: 1121, Column: 21
На самом деле я сейчас не использую никаких плагинов Cordova. Просто чистый Angular. Вызов $location.path() явно завершается ошибкой, потому что ресурс не может быть загружен.
Но почему это удалось в Ripple?
/
? поэтомуhome
вместо/home
. Я не знаком с тем, как работает angular в этом отношении, но я знаю, что у Android есть некоторые проблемы с путями. - person Dawson Loudon   schedule 09.07.2014