正在访问$resource.query()中的第一项-Angularjs

正在访问$resource.query()中的第一项-Angularjs,angularjs,express,pug,Angularjs,Express,Pug,$resource.query()方法有一些问题。我正在尝试访问其中的第一个元素,但它对我不起作用。选择控制器返回集合时不会出现问题 controller.js main.jade 图书目录。jade div(ng-controller='bsMainCtrl') p Title: {{ singleBook.title }} p Author: {{ singleBook.author }} p ISBN: {{ singleBook.ISBN }} p Created

$resource.query()方法有一些问题。我正在尝试访问其中的第一个元素,但它对我不起作用。选择控制器返回集合时不会出现问题

controller.js

main.jade

图书目录。jade

div(ng-controller='bsMainCtrl') 
  p Title: {{ singleBook.title }}
  p Author: {{ singleBook.author }}
  p ISBN: {{ singleBook.ISBN }}
  p Created at: {{ singleBook.createdAt | date }}
  a(ng-href='/edit/{{ singleBook._id }}') Edit
div(ng-controller="bsSelectionCtrl")
  div(ng-repeat='book in books')
    button(ng-click='selectBook()') {{ book.title }}
选择。翡翠

div(ng-controller='bsMainCtrl') 
  p Title: {{ singleBook.title }}
  p Author: {{ singleBook.author }}
  p ISBN: {{ singleBook.ISBN }}
  p Created at: {{ singleBook.createdAt | date }}
  a(ng-href='/edit/{{ singleBook._id }}') Edit
div(ng-controller="bsSelectionCtrl")
  div(ng-repeat='book in books')
    button(ng-click='selectBook()') {{ book.title }}
service.js

route.js

是否与范围相关?我尝试过使用Angular inspector,但只能得出singleBook为null的结论。

$resource.query()返回一个承诺,它最初不包含任何数据,因此您无法在尝试访问时通过编号索引访问它

请尝试:

bsBooks.query().$promise.then(function(data){
  $scope.singleBook = data[0];  
});

使用回调或承诺从服务器等待数据

var data = bsBook.query(function(){ 
   $scope.singleBook = data[0]; 
}) 

请参见

var data=bsBook.query(function(){var first=data[0];})//等待服务器,然后分配val。这是我在回答中提供的promise版本的另一种回调方法。他可能没有理由分配给名为data的局部变量,因此最好将其表示为
bsBooks.query(function(data){$scope.singleBook=data[0];})其中数据的值是通过参数获得的。
bsBooks.query().$promise.then(function(data){
  $scope.singleBook = data[0];  
});
var data = bsBook.query(function(){ 
   $scope.singleBook = data[0]; 
})