在angular-meteor中,使用$ meteor.object获取的文档不会呈现

时间:2015-05-15 03:46:42

标签: angularjs meteor

我有一个角度流星程序,其中$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" }

为什么书的名称没有呈现?

1 个答案:

答案 0 :(得分:1)

好吧,似乎写下问题有帮助......所以问题是我删除了autopublish包,而我没有订阅该集合。这一行:

$scope.book = $meteor.object(Books, $scope.bookId);

必须更改为

$scope.book = $meteor.object(Books, $scope.bookId).subscribe("books");