[英]$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.