我正在使用node-webkit和Angular-JS构建应用程序,我遇到了以下问题:
应用在Chrome 中运行良好,但在编译到节点时,大多数路由都会进入文件列表页面。如果我运行外部调试器,我在控制台中没有收到错误(使用chrome devtools),但是我注意到当我点击一个链接时它会转到" file:// C:/ #/链接"而不是" file:// C:/ subfolder / subfolder2 /#/ link"喜欢它。
我是否需要告诉node-webkit设置正确的base-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 :(得分:0)
如果您计划在多个位置运行基本URL,则没有任何问题。此外,使用./
代替/
(无论您身在何处)都可以使用。
答案 1 :(得分:0)
不确定我是否对您提出了问题,但我认为process.execPath正是您所需要的。
答案 2 :(得分:0)
第一个问题是您使用$routeProvider
模块中的ng
,但是您从$stateParams
服务获取参数,我相信它来自angular-ui-router,如果您需要使用$routeProvider
从$routeParams
服务中获取参数时的参数。
接下来修复加载模板的问题,只需在index.html文件中的脚本标记中定义它们,使用模板名称作为脚本标记ID,如下所示:
<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();
}
}
应该适合你