Angular JS&节点Webkit路由

时间:2015-01-23 23:28:17

标签: javascript angularjs node-webkit

我正在使用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: '/'});
      }
]);

3 个答案:

答案 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();
    }
}

应该适合你