【问题标题】:Angular JS & Node Webkit RoutingAngularjs 和 Node Webkit 路由
【发布时间】:2015-01-23 23:28:17
【问题描述】:

我正在使用 node-webkit 和 Angular-JS 构建应用程序,但遇到以下问题:

该应用程序在 chrome 中运行良好,但是当编译到 node 中时,大多数路由都会指向文件列表页面。如果我运行外部调试器,我不会在控制台中收到错误(使用 chrome devtools),但是我确实注意到,当我单击一个链接时,它会将我带到“file://C:/#/link”而不是比应该的“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: '/'});
      }
]);

【问题讨论】:

    标签: javascript angularjs node-webkit


    【解决方案1】:

    如果您打算在多个地方运行它,那么拥有一个基本 URL 并没有错。此外,使用./ 而不是/(无论您身在何处)可能会起作用。

    【讨论】:

    • 哪一个,基础url还是./?
    • 我尝试设置 并没有帮助。我无法设置其他基本 url,因为我无法知道某人在运行应用程序时 pc 的结构。也许node-webkit可以通过js提供路径?必须有一些标准的方法来做到这一点......
    【解决方案2】:

    不确定我的问题是否正确,但我认为 process.execPath 正是您所需要的。

    【讨论】:

      【解决方案3】:

      第一个问题是您使用ng 模块中的$routeProvider,但是您从$stateParams 服务中获取参数,我相信这是来自angular-ui-router,如果您在使用@ 时需要参数987654324@ 从$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();
          }
      }
      

      这应该适合你

      【讨论】:

        猜你喜欢
        • 2012-11-08
        • 2016-06-27
        • 2016-02-21
        • 2015-04-02
        • 2013-10-22
        • 1970-01-01
        • 1970-01-01
        • 2014-10-12
        • 2014-11-22
        相关资源
        最近更新 更多