2015-12-21 33 views
0

我已经花是个不错的4至6个小时试图解决我的问题 - 也许我看着它完全错误的。服务(厂)错误 - JSON API不显示数据

controller.js文件:

'use strict'; 

/* Controllers */ 

var bookControllers = angular.module('bookControllers', []); 

bookControllers.controller('BookListCtrl', ['$scope', 'Book', 
    function($scope, Book) { 
    $scope.books = Book.query(); 
    $scope.orderProp = 'name'; 
    }]); 

bookControllers.controller('BookDetailCtrl', ['$scope', '$routeParams', 'Book', 
    function($scope, $routeParams, Book) { 
    $scope.book = Book.get({bookId: $routeParams.bookId}, function(book) { 
     $scope.mainImageUrl = book.avatar; 
    }); 

    $scope.setImage = function(imageUrl) { 
     $scope.mainImageUrl = imageUrl; 
    }; 
    }]); 

service.js文件

'use strict'; 

/* Services */ 

var bookServices = angular.module('bookServices', ['ngResource']); 

bookServices.factory('Book', ['$resource', 
    function($resource){ 
    return $resource('https://api.myjson.com/bins/1oofv', {}, { 
     query: {method:'GET', params:{bookId:'bookId'}, isArray:true} 
    }); 
    }]); 

所以发生了什么。

我的SHOW文件 - 显示所有books我的book.json文件,我在myjson上托管显示所有我需要的内容。

它相应地显示所有缩略图与下面的HTML:

<div class="container"> 
<!--Nav Bar--> 
    <div class="row"> 
    <div class="col-md-4"> 
     Find me the best 
     <select ng-model="orderProp" class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown"> 
     <option value="name">Alphabetical</option> 
     <option value="age">Newest</option> 
     </select> 
    </div> 

    <div class="col-md-4"> 
     Books about 
     <select ng-model="orderProp" class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown"> 
     <option ng-repeat="book in books" value="">{{ book.genre.name }}</option> 
     </select> 
    </div> 

    <div class="col-md-4"> 
     <div class="input-group"> 
     <input ng-model="query" type="text" class="form-control" placeholder="Search books"> 
      <span class="input-group-btn"> 
      <button class="btn btn-default" type="button"><span class="glyphicon glyphicon-search" ></span></button> 
      </span> 
     </div> 
    </div> 
    </div> 

<!--Body content--> 
    <div class="row"> 
    <div class="col-md-4" ng-repeat="book in books | filter:query | orderBy:orderProp"> 
     <div class="thumbnail" id="books"> 
     <a href="#/books/{{ book.name }}"><img ng-src="{{ book.cover }}"></a> 
     <div class="caption"> 
      <h4>{{ book.name }}</h4> 
      <h5><a href="{{ book.id }}">{{ book.author.name }}</a></h5> 
      <span class="glyphicon glyphicon-heart likes">{{ book.likes }}</span> 
      <span style="float: right;">{{ book.published | date:'yyyy-MM-dd' }}</span> 
     </div> 
     </div> 
    </div> 
    </div> 
</div> 

这是一切优秀 - 现在,当我点击一个特定的书或作者我期待的应用NAV到下一个页面中的所有详细的细节我需要在以下模板(但事实并非如此):

<div class="container"> 
<div class="row"> 
    <header> 
    <h1></h1> 
    <h4></h4> 
    <p></p> 
    <h6>Categories:</h6> 
    <span>{{ book.genre.category }}</span> 
    </header> 
</div> 

<div class="row"> 
    <h3>Introduction</h3> 
    <h1></h1> 
    <p></p> 
    <div class="line-sep"></div> 
    <img ng-src="{{ avatar }}" class="img-round" /> 
    <h2></h2> 
</div> 

<div class="row"> 
    <h1>Similar reading</h1> 
    <p></p> 
    <div class="col-md-4"> 
    <div class="thumbnail" id="books"> 
     <a href="#"><img ng-src="http://placehold.it/350x500"></a> 
     <div class="caption"> 
     <h4>Lorem Ipsum Dolar Asar</h4> 
     <h5><a href="#">By Mr Lorem Ipsum</a></h5> 
     <span class="glyphicon glyphicon-heart likes">1032</span> 
     <span style="float: right;">3 days ago</span> 
     </div> 
    </div> 
    </div> 
    <div class="col-md-4"> 
    <div class="thumbnail" id="books"> 
     <a href="#"><img ng-src="http://placehold.it/350x500"></a> 
     <div class="caption"> 
     <h4>Lorem Ipsum Dolar Asar</h4> 
     <h5><a href="#">By Mr Lorem Ipsum</a></h5> 
     <span class="glyphicon glyphicon-heart likes">1032</span> 
     <span style="float: right;">3 days ago</span> 
     </div> 
    </div> 
    </div> 
    <div class="col-md-4"> 
    <div class="thumbnail" id="books"> 
     <a href="#"><img ng-src="http://placehold.it/350x500"></a> 
     <div class="caption"> 
     <h4>Lorem Ipsum Dolar Asar</h4> 
     <h5><a href="#">By Mr Lorem Ipsum</a></h5> 
     <span class="glyphicon glyphicon-heart likes">1032</span> 
     <span style="float: right;">3 days ago</span> 
     </div> 
    </div> 
    </div> 
</div> 
</div> 

在现场看我的josn文件:https://api.myjson.com/bins/1oofv

所有我需要的要做的是以下几点:

使用json文件在list页面上显示书籍(有一些细节) - 以我认为合适的任何显示风格显示。

然后 - 一次显示所有的书(用搜索和过滤能力) - 能够点击一本书,被带到一个BOOK DETAIL页面,我们将深入研究有关的书和展示的书籍类似于详细给他们。

+2

你只是设置href =“{{book.id}}”。这看起来不正确。你可以展示你设置的不同路线吗? – yeouuu

回答

0

停止强调,并按照Flatlander Gemstore tutorial

  1. 第一个问题,我可以发现的是,你使用Book.get但定义Book.query
  2. 其次,使用href="#"休息角,要么使用一个<a href="">或者,因为我喜欢,简单地用一个按钮,这是条死胡同,ISN的超链接'链接。
  3. 为yeouuu说,href="{{ book.id }}"似乎是错误的,这可以是一个语义错误,应该是href="{{ book.url }}"或者这根本就是一个错误,应该已经完全是另一回事。

做的教程,这是一个很好的资源。

+0

谢谢 - 我会检查出来。如此多的资源,我似乎从每个学习错误的东西。我尝试使用“phoencatApp”示例表格来创建我需要的应用程序。 – TheyDontHaveIT

+0

这没有什么错,电话应用程序的作品,是一个很好的资源,但我发现宝石店加快了速度。由于它是交互式结合屏幕录像,我发现它更容易遵循。另一个很好的资源是[Papa Johns Angular Styleguide](https://github.com/johnpapa/angular-styleguide),在工作中我们基于他的工作中的代码风格,但在一些方面更进一步。 – Pjetr