Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 为什么对同一集合调用不同的订阅会导致meteor出错?_Angularjs_Meteor_Angular Meteor - Fatal编程技术网

Angularjs 为什么对同一集合调用不同的订阅会导致meteor出错?

Angularjs 为什么对同一集合调用不同的订阅会导致meteor出错?,angularjs,meteor,angular-meteor,Angularjs,Meteor,Angular Meteor,我正在做这个 a我有个问题要问 停止订阅主题 您可以使用“订阅”使用ctrl+f 那么这个话题的关键句子是 原因是我们正在partyDetails控制器内的同一集合上调用不同的订阅 更正前的代码是 $scope.party = $meteor.object(Parties, $stateParams.partyId).subscribe('parties'); $scope.users = $meteor.collection(Meteor.users, false).subscribe('us

我正在做这个 a我有个问题要问

停止订阅主题

您可以使用“订阅”使用ctrl+f

那么这个话题的关键句子是

原因是我们正在partyDetails控制器内的同一集合上调用不同的订阅

更正前的代码是

$scope.party = $meteor.object(Parties, $stateParams.partyId).subscribe('parties');
$scope.users = $meteor.collection(Meteor.users, false).subscribe('users');
然后经过修正

$scope.party = $meteor.object(Parties, $stateParams.partyId);
$scope.users = $meteor.collection(Meteor.users, false).subscribe('users');
$scope.$meteorSubscribe('parties');
我试图在更正代码之前运行,但cmd中没有显示任何(错误),但正如教程所说,这只会导致错误的结果

如果导航到party details页面,然后返回,分页和搜索将停止工作

然后我有两个问题

  • 为什么cmd上没有显示错误
  • 为什么partyDetails控制器的错误会影响partiesList控制器的搜索和分页?他们是什么关系

  • 编辑:如果您不取消订阅,那么如果您离开并再次返回,您将尝试订阅同一出版物两次,从而导致错误,因为meteor中的订阅将持续到您结束订阅为止

    有两种方法可以摆脱angular meteor的订阅。您可以为订阅分配句柄变量,然后在离开页面时停止订阅。第二种(推荐的方法)是使用
    $scope.$meteorSubscribe
    而不是
    $meteor.subscribe()
    ,因为它被设置为在作用域被销毁时自动删除订阅

    我看不到你所有的代码来确定你为什么会或没有得到你认为应该得到的错误,希望这能对教程中发生的事情有所帮助

    最终的结果是:

    $meteor.autorun($scope, function() {
        $meteor.subscribe('parties', {
            limit: parseInt($scope.perPage),
            skip: parseInt(($scope.page - 1) * $scope.perPage),
            sort: $scope.sort
        }).then(function() {
            $scope.partiesCount = $meteor.object(Counts, 'numberOfParties', false);
            $scope.parties = $meteor.collcetion(function() {
                return Parties.find({}, {
                    sort: $scope.getReactively('sort');
                });
            });
        });
    });
    

    请注意,他还更改了服务器上的发布功能。如果您单击链接以显示git差异,这将有助于理解。

    @sarsureiyakoon我编辑了我的答案,希望能对您的问题有所帮助。