2014-10-29 5 views
0

Я создаю приложение AngularJS, которое я ожидал работать как гибридное приложение для мобильных устройств. Таким образом, приложение будет запускаться локально из файловой системы.Возможно ли построить гибридное приложение с угловым?

Когда $ routeProvider получает файл html, я получаю следующее сообщение.

Это нарушение CORS очевидно, но файл является локальным и пытается получить доступ к другому локальному файлу. Это не похоже на то, что веб-сайт пытается получить доступ к локальным файлам клиентов. Это клиент.

Я не могу развернуть веб-сервер, чтобы обслуживать локальные файлы, потому что это будет упаковано и развернуто как локальное приложение.

Я знаю, что люди постоянно создают гибридные мобильные приложения. Я не могу понять, как они это делают с AngularJS и почему AngularJS не предлагает ни решения, ни предписывает, как обойти CORS.

Я открыт для всех предложений. Спасибо всем.

XMLHttpRequest не может загрузить файл: /// D: /SubversionRits/SourceCode/Verso%20-%20Mashup%20Proposal/MarshupSource/MashupCoreUI/core/apps/mashup/welcome/welcome.html. Запросы на кросс-начало поддерживаются только для схем протокола: http, data, chrome-extension, https, chrome-extension-resource. VM36 angular.js: 8380

Ошибка: не удалось выполнить «отправить» в «XMLHttpRequest»: не удалось загрузить файл: /// D:/SubversionRits/SourceCode/Verso% 20-% 20Mashup% 20Предпосылки/MarshupSource/MashupCoreUI/ядро ​​/ приложение/Mashup/добро пожаловать/welcome.html.

Вот мой маршрут конфигурации

mashupApp.config(function ($routeProvider, $httpProvider) { 

    // I've tried all these with no effect. 
    //$httpProvider.defaults.headers.common['Access-Control-Allow-Origin'] = '*'; 
    //$httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 

    //$routeProvider.defaults.headers.common['Access-Control-Allow-Origin'] = '*'; 
    //$httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 

    //$httpProvider.defaults.useXDomain = true; 
    //delete $httpProvider.defaults.headers.common['X-Requested-With']; 

    $routeProvider 
     .when('/about', { 
      templateUrl: 'apps/mashup/about/about.html', 
      controller: 'aboutController', 
      resolve: { 
       loadMyCtrl: ['$ocLazyLoad', function ($ocLazyLoad) { 
        // you can lazy load files for an existing module 
        return $ocLazyLoad.load({ 
         name: 'mashupApp', 
         files: ['apps/mashup/about/aboutController.js', 'apps/mashup/~appServices/dataService.js'] 
        }); 
       }] 
       , sessionLoad: function ($route, sessionLoad) { return sessionLoad.loadCompleted(); } 
      } 

     }) 
     .when('/', { 
      templateUrl: 'apps/mashup/welcome/welcome.html', 
      sessionLoad: function ($route, sessionLoad) { return sessionLoad.loadCompleted(); } 
      } 
     }) 

    ; 

}); 
+0

Что вы используете для упаковки и развертывания приложения, как родное приложение? Я не знаю, почему у вас проблемы. Проверьте [ionic framework] (http://ionicframework.com/) и посмотрите, как они это делают. Все, что вам нужно установить, - это узел и запустить пару команд (например, 'ionic start testapp sideMenu', и у вас будет приложение, которое работает для меня с использованием кордовы. Если есть что-то еще, что вы используете, вам нужно указать, что в вопрос –

+0

Прямо сейчас я не собираю это ни в чем. Я создаю веб-приложение, но хочу, чтобы можно было взять кусочки веб-приложения и упаковать их в гибридную структуру. Меня беспокоило, Я заметил, что я не могу запустить свой проект из файловой системы без веб-сервера. Мое впечатление от гибридных приложений заключается в том, как они работают, поэтому я хочу убедиться, что все, что я делаю, совместимо. Сегодня я планирую построить простое приложение Intel XDK, так как у меня уже есть учетная запись с ними. Если это будет хорошо, я возьму часть этого кода и создаю еще одно примерное приложение, но с этим кодом маршрутизации. Мысль? – user3448990

+0

Итак, у вас есть веб-страница, на которую вы идете на свой телефон, и пытаетесь вытащить локальные файлы с телефона для шаблонов? Это не сработает ... –

ответ

0

Вы не можете получить доступ к файлам напрямую из-за настроек безопасности браузера, но вы можете хранить данные и т.д. в LocalStorage и использовать его, когда приложение отсутствует.

Кто-то поставил вместе пример здесь http://amitavroy.com/justread/content/articles/html5-local-storage-angular-js

1

Хорошо, я понял.

Запуск веб-приложения из файла не работает из-за CORS, но когда вы упакованы в Phonegap или Cordova внутри Intel XDK, все работает.

Я принял мое приложение и создал чистый проект Intel XDK и скопировал его веб-файлы, не меняя ничего.

Все сработало!

Спасибо за те, кто предложил идеи и предложения. Я очень ценю это.

Я вижу, как это может работать сейчас.

1

Если вы хотите создать гибридное мобильное приложение с помощью AngularJS, вам обязательно нужно проверить Ionic Framework.

С сайта Ionic:

A match made in heaven. Ionic utilizes AngularJS in order to create a framework most suited to develop rich and robust applications. Ionic not only looks nice, but its core architecture is for serious app development, and AngularJS ties in perfectly.

 Смежные вопросы

  • Нет связанных вопросов^_^