2015-11-02 39 views
0

我在做这个angular-meteor tutorial step 12 的我在为什么在同一个集合上调用不同的订阅会导致流星出错?

停止订阅主题

问题

您可以使用Ctrl + F键使用 “meteorSubscribe”

那么关键句在那个话题上是

原因是我们在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但它只是导致教程说错误的结果

如果您导航到派对详细信息页面,然后返回,分页和搜索将停止工作。

然后我有两个问题

  1. 为什么在CMD没有错误说明了什么?
  2. 为什么partyDetails控制器的错误影响到partiesList控制器搜索和分页?他们的关系是什么?

回答

2

编辑:如果你没有取消订阅,那么如果你离开并返回,你会最终尝试两次订阅相同的出版物,导致错误,因为订阅流星持续到你结束它们。

有两种方式摆脱角流星的订阅。你可以为订阅分配一个句柄变量,然后在远离页面导航时停止它。两种(推荐的方式)是使用$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差异。

+0

请再读一遍我的问题@Tj Gienger –

+1

@SarinSuriyakoon我编辑了我的答案,希望对您的问题有所了解。 –

+0

谢谢你编辑的答案是我想要的 –

相关问题