4

我正在尝试使用 ng-route 以角度创建应用程序,但我无法让它工作。

我确实搜索了这个问题并尝试了将我的 ng-app 移动到但似乎没有任何效果的建议。

我在下面添加了一个 plunker 链接

http://plnkr.co/edit/a8VIRzloIMqANK4f8YXb?p=preview

有人可以帮忙吗

在这里也添加代码

索引html

<!DOCTYPE html>
<html >
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
    <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js"></script>
    <script type="text/javascript" src="dist/ng-table.min.js"></script>
    <link rel="stylesheet" href="dist/ng-table.min.css">
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.15/angular-route.min.js"></script>
    <link href="main.css" rel="stylesheet" />
    <script type="text/javascript" src="app.js"></script>
    <script type="text/javascript" src="DemoCtrl.js"></script>


</head>
  <body  ng-controller="DemoCtrl" ng-app="stockApp">
    <header>

    <div class="blog-masthead">
      <div class="container">
        <nav class="blog-nav">
          <h1 class="stockHeader">Stock App</h1>
          <a class="blog-nav-item pull-right" href="#/">Login</a>
          <a class="blog-nav-item pull-right" href="#/stock">Stock</a>
          <a class="blog-nav-item active pull-right" href="#/addTools">Add Tools</a>
          </nav>
      </div>
    </div>
    </header>
    <div ng-view></div>
  </body>
</html>

应用程序.js

var sampleApp = angular.module('stockApp', ['ngRoute']);
sampleApp.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      when('/', {
        templateUrl: 'login.html',
        controller: 'DemoCtrl'
      }).
      when('/stock', {
        templateUrl: 'stockStatus.html',
        controller: 'DemoCtrl'
      }).
      when('/addTools', {
        templateUrl: 'addTools.html',
        controller: 'DemoCtrl'
      }).
      otherwise({
        redirectTo: '/'
      });
  }]);

DemoCtrl.js

var app = angular.module('stockApp', ['ngTable']).
controller('DemoCtrl', function($scope) {
$scope.stock="In Stock!"
})

除此之外还有 3 个部分。

4

2 回答 2

4

请参阅您的原始 plunker 的这个分支,其中以下代码段已更新:http ://plnkr.co/edit/91XYMEC85Shgu6kQSrty?p=preview

// DemoCtrl.js
var app = angular.module('controllers', []).
            controller('DemoCtrl', function($scope) {
               $scope.stock="In Stock!"
            })

// app.js
var sampleApp = angular.module('stockApp', ['ngRoute', 'controllers']);

首先,您的控制器代码通过传入依赖项重新初始化 stockApp 模块。如果您的控制器需要单独的依赖关系,请将它们创建为单独的模块并使您的应用程序依赖于该模块。

其次,我更新了angular和angular JS的版本。根据先前的答案,冲突版本可能会导致问题:无法实例化模块 [$injector:unpr] Unknown provider: $routeProvider

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular-route.js"></script>
于 2015-04-09T04:06:11.980 回答
0

要检查的另一件事...确保您以正确的顺序加载 Angular js 文件(控制器、服务、工厂等)。例如,如果控制器使用服务,则需要在控制器之前将服务加载到 DOM 中。

此外,请确保您的任何服务或工厂都没有重新初始化应用程序。您的代码不应如下所示:

angular.module('app', [])
    .service('TrxnService', function () {
         //code here
     })

但相反,它应该看起来像这样(没有括号)......

 angular.module('app')
     .service('TrxnService', function () {
          //code here
      })

新手注意:用您在顶级模块声明中命名应用程序的任何内容替换“应用程序”。

于 2015-11-01T02:51:00.707 回答