angularjs>路由器解析> "错误:[$ injector:unpr]未知提供商"

时间:2017-03-26 11:51:50

标签: angularjs resolve

我试图为我的项目添加一个resolve \ promise,所以当你要求一个页面时,它只会在从服务器接收到json后加载。 这是我的js代码:

'use strict';

 angular.module('myApp.show', ['ngRoute'])

 .config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/show', {
    templateUrl: 'views/show.html',
    controller: 'showCtrl',
    resolve: {
        booksList: function ($http) {
            return ($http.get('data/books.json')
                .then(function (data) {
                    return data;
                }));
        }
     }
  });
}])

.controller('showCtrl', ['booksList', '$scope', function (booksList, $scope) {
    $scope.books = booksList;
    $scope.removeRow = function (productIndex) {
       if (window.confirm("are you sure?")) {
           $scope.books.splice(productIndex, 1);
    }
  }
}])

但这是我得到的: 错误:[$ injector:unpr]未知提供者:booksListProvider< - booksList< - showCtrl

我有点新的角度,但我遵循了几个教程,虽然它在视频中工作 - 我不断收到错误。

HTML:

<div class="table-responsive"> 
    <div ng-app="myApp.show" ng-controller="showCtrl">   <!-- ctrl -->
        <table st-table="rowCollection" class="table table-striped">
            <thead>
                <tr>
                    <th st-sort="author">Author</th>
                    <th st-sort="date">Date</th>
                    <th st-sort="title">Title</th>
                    <th></th>
                </tr>
            </thead>
            <tbody>
            <tr ng-repeat="(bookIndex, book) in books">
                <td class="col-md-3">{{ book.author }}</td>
                <td class="col-md-3">{{ book.date | date }}</td>
                <td class="col-md-4">{{ book.title | beutifyTitle }}</td>
                <td class="col-md-1"><ng-include src="'views/partials/editBook.html'"></ng-include></td>
                <td class="col-md-1"><button class="btn btn-warning" ng-click="removeRow()">Delete</button></td>
                </tr>
            </tbody>
        </table> 
    </div> 
</div

1 个答案:

答案 0 :(得分:3)

您应该从模板中删除ng-controller="showCtrl"。原因是,你已经通过路由器分配showCtrl了。但是,当你再次在内联模板上写ng-controller时,它无法获得booksList解析提供程序。