我有一个角度流星程序,其中$meteor.object
方法返回一个奇怪的对象而不是文档。
我编写的代码非常类似于angluar-meteor turorial(http://angular-meteor.com/tutorial/step_06):
scratch.js:
angular.module("docflow").controller("ScratchCtrl",
["$scope", "$rootScope", "$stateParams", "$meteor",
function($scope, $rootScope, $stateParams, $meteor){
$scope.bookId = $stateParams.bookId;
$scope.book = $meteor.object(Books, $scope.bookId);
}]);
scratch.ng.html:
<div>
Id: {{ bookId }}<br/>
Name: {{ book.name }}<br/>
Book: {{ book|json }}
</div>
这是渲染的内容 - 注意名称后面没有任何内容:
Id:dMk7PuQzrPCtwznNC
名称:
Book:{“autorunComputation”:{“stopped”:false,“invalidated”:false,“firstRun”:false,“_ id”:25,“_ onInvalidateCallbacks”:[null,null],“_ parent”:null ,“_recomputing”:false}}
我知道book对象存在并且有一个name属性。如果我用渲染的id直接查询mongo,我得到了预期的对象:
meteor:PRIMARY> db.books.findOne({_id: "dMk7PuQzrPCtwznNC"});
{ "_id" : "dMk7PuQzrPCtwznNC", "name" : "A", "owner" : "Y5zQY4KeD9BSHdDma" }
为什么书的名称没有呈现?
答案 0 :(得分:1)
好吧,似乎写下问题有帮助......所以问题是我删除了autopublish
包,而我没有订阅该集合。这一行:
$scope.book = $meteor.object(Books, $scope.bookId);
必须更改为
$scope.book = $meteor.object(Books, $scope.bookId).subscribe("books");