2015-01-23 3 views
1

Я строю приложение с помощью узла-WebKit и радиально-JS и у меня возникли следующие проблемы:Угловая JS & Node Webkit Routing

Приложение прекрасно работает в хроме, но при компиляции в узел, наиболее маршруты ведут к странице списка файлов. Если я запускаю внешний отладчик, я не получаю сообщение об ошибке в консоли (используя chrome devtools), однако я замечаю, что когда я нажимаю ссылку, я беру меня в "файл: // C:/#/link" чем «файл: // C:/subfolder/subfolder2/#/link», как это должно быть.

Нужно ли указывать node-webkit, чтобы установить правильный базовый url?

Простой пример моей установки является:

HTML:

<!DOCTYPE html> 
<html ng-app="app"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Main Page</title> 
<link href="css/style.css" rel="stylesheet" type="text/css" /> 
</head> 
<body ng-cloak ng-controller="ClockController"> 
<div id="nav"> 
<a href="/#/link/1">Link 1</a> 
<a href="/#/link/2">Link 2</a> 
<a href="/#/link/3">Link 3</a> 
</div> 
</body> 
</html> 

Маршруты JS:

"use strict"; 

angular.module('app') 
.config([ 
    '$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) { 
     $routeProvider 
      .when('/', { 
       templateUrl: 'home.html', 
      })     
      .when('/link/:linkid', { 

        templateUrl: function($stateParams) { 
         return 'link_'+ $stateParams.linkid +'.html'; 
        } 
      }) 
      .otherwise({redirectTo: '/'}); 
     } 
]); 

ответ

0

Ничего плохого в базовый URL, если вы планируете запустить его в многокорпусных мест. Кроме того, использование ./ вместо / (которое идет в корень, где бы вы ни находились) могло бы работать.

+0

Это не работает, я по-прежнему получаю ту же проблему. – Akoben

+0

Какой, базовый url или '. /'? – Shomz

+0

Я пробовал настройку , и это не помогло. Нет другого базового url, который я могу установить, поскольку я могу, но знаю структуру ПК someones, когда они запускают приложение. Может быть, node-webkit может предоставить путь через js? Должен быть какой-то стандартный способ сделать это ... – Akoben

0

Не уверен, что у меня есть вопрос правильно, но я думаю, что process.execPath - это именно то, что вам нужно.

0

первый вопрос в том, что вы используете $routeProvider от ng модуля, но ваш захват параметров из $stateParams службы, которые я считаю от углового-интерфейсов маршрутизатора, если вы хотите, чтобы параметры, когда вы используете $routeProvider захватить их с $routeParams оказание услуг.

рядом, чтобы решить проблему с загрузкой шаблонов просто определить их в тегах сценария в файле index.html, используя имя шаблона в качестве сценария идентификатора тега, например так:

<script type="text/ng-template" id="home.html"> 
    <!-- your template html goes here --> 
</script> 

и ссылок, я поставит href="#", а затем что-то вроде ng-click="changeRoute('/home')"

затем в функции запуска определить, что ваш $rootScope

app.run(runFunc); 

runFunc.$inject = ['$rootScope','$location','$route']; 

function runFunc($rootScope,$location,$route){ 
    $rootScope.changeRoute = changeRoute; 

    function changeRoute(route){ 
     $location.path(route); 
     $route.reload(); 
    } 
} 

, который должен сработать для вас