我目前正在嘗試使用Angular和NodeJS構建RESTful API。目前我正面臨着一個惱人的問題。創建一個按鈕以將用戶帶到我的應用程序的詳細信息頁面後,該按鈕根本無法響應。按鈕本身編碼正確,我認爲,這是我很不確定的指令。AngularJS按鈕指令不起作用
主要app.js
var myApp = angular.module('myApp', [ 'ngRoute']);
myApp.config(function($routeProvider){
$routeProvider.when('/', {
controller: 'BooksController',
templateUrl: 'views/books.html'
})
.when('/books', {
controller: 'BooksController',
templateUrl: 'views/books.html'
})
.when('/books/details/:id ', {
controller: 'BooksController',
templateUrl: 'views/book_details.html'
})
.when('/books/add', {
controller: 'BooksController',
templateUrl: 'views/add_book.html'
})
.when('/books/edit/:id ', {
controller: 'BooksController',
templateUrl: 'views/edit_book.html'
})
.otherwise({
redirectTo: '/'
});
});
books.html(圖)
<div class="panel panel-default" ng-init="getBooks()">
<div class="panel-heading">
<h3 class="panel-title">Latest Books</h3>
</div>
<div class="panel-body">
<div class = "row">
<div ng-repeat="book in books">
<div class="col-md-6">
<div class="col-md-6">
<h4>{{book.title}}</h4>
<p>{{book.description}}</p>
<a class =" btn btn-primary" href ="#/books/details/{{book._id}}">View Details</a>
</div>
<div class="col-md-6">
<img class ="thumbnail" src="{{book.image_url}}">
</div>
</div>
</div>
</div>
</div>
</div>
books.js
var myApp = angular.module('myApp');
myApp.controller('BooksController', ['$scope', '$http', '$location', '$routeParams',function($scope, $http, $location, $routeParams){
console.log('LOADED');
$scope.getBooks = function(){
$http.get('/api/books ').success(function(response){
$scope.books = response;
});
}
$scope.getBook = function(){
var id = $routeParams.id;
$http.get('/api/books/'+id).success(function(response){
$scope.book = response;
});
}
}]);
我認爲這個問題可能會在這裏:$http.get('/api/books/'+id).success(function(response)
因爲那是什麼我正在使用從按鈕路由到詳細信息頁面。
這是我book_details.html頁
<div class="panel panel-default" ng-init="getBook()">
<div class="panel-heading">
<h3 class="panel-title">{{book.title}}</h3>
</div>
<div class="panel-body">
<div class = "row">
<div class = "col-md-4">
<img src ="{{book.image_url}}">
</div>
<div class = "col-md-8">
<p>{{book.description}}</p>
<ul class = "list-group">
<li class ="list-group-item">Genre: {{book.genre}}</li>
<li class ="list-group-item">Author: {{book.author}}</li>
<li class ="list-group-item">Publisher: {{book.publisher}}</li>
<li class ="list-group-item">Pages: {{book.pages}}</li>
</ul>
</div>
</div>
</div>
</div>
加上我對{{book.image_url}}
得到404,我不知道爲什麼。這可能有助於按鈕不可點擊嗎?
對於你的404錯誤,使用'ng-src =「{{book.image_url}}」'。請參閱https://docs.angularjs.org/api/ng/directive/ngSrc – Phil
我不會使用'ng-init'來加載狀態(請參閱此處的警告〜https://docs.angularjs.org/api/納克/指令/ ngInit)。相反,在路由配置中使用「resolve」部分。我還會使用不同的控制器來預訂書籍和書籍 – Phil
是否可以通過瀏覽器直接訪問詳細信息的URL?這應該有助於你進一步縮小範圍。因爲你的按鈕沒有問題,因此 –