簡體   English   中英

$ meteor.collection不返回集合

[英]$meteor.collection doesn't return a Collection

Angular-Meteor教程第9步之后 ,我試圖創建一個使用Meteor集合的Angular指令。

該文件位於根文件夾中:

TicTacToeBoards = new Meteor.Collection("tic_tac_toe_boards");

if (Meteor.isServer) {
    Meteor.publish('TicTacToeBoards', function() { return TicTacToeBoards.find(); });
}

該文件位於/ client文件夾中:

angular.module('TicTacToe').directive('tictactoegraph', function() {
    return {
        templateUrl: 'client/graph/tictactoegraph.ng.html',
        scope: true,
        controller: function($scope, $meteor, Sigma, TicTacToeClass) {
            $scope.TicTacToeBoards = false;

            $meteor.subscribe('TicTacToeBoards').then(function(subscriptionHandle){
                $scope.TicTacToeBoards = $meteor.collection(TicTacToeBoards);
            });
        },
        link: function($scope, element, attrs) {
            // TODO: Ask SO if there's a better way to wait on the subscription....
            $scope.$watch('TicTacToeBoards', function(newValue, oldValue) {
                if ($scope.TicTacToeBoards) {
                    console.log($scope.TicTacToeBoards); // An array of objects.
                    var nextBoards = $scope.TicTacToeBoards.find({ numberOfMoves: 0 });
                }
            });
        }
    }
}

不幸的是,它給出了一個錯誤:

TypeError:$ scope.TicTacToeBoards.find不是一個函數

看來$scope.TicTacToeBoards不是Mongo游標,而是TicTacToeBoards.find()將返回的對象數組。 為什么它不是光標?

沒錯,$ meteor.collection不返回游標,它返回的類型為AngularMeteorCollection的數組與眾不同: http ://angular-meteor.com/api/AngularMeteorCollection

這樣做是因為我們想為Angular開發人員提供帶有ll的常規數組,因此可以輕松使用它的API。

不過,向該數組添加一個find函數是一個有趣的想法。 是否要使用該函數返回已過濾的對象? 您可以為此使用過濾器,但也許我們也可以添加此選項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM