如何在控制器中访问帮助器,为什么我的find()为空?

时间:2016-05-28 12:27:51

标签: angularjs mongodb meteor

我对新的流星1.3.1很新。所以我以前从未与助手合作过。

这是我的帮手:

this.helpers({
    questions() {
        return Questions.find({categoryId: this.categoryId});
    }
});

第一个问题:如何在其自己的控制器中访问此帮助程序(questions)?我尝试了$scope.questionsthis.questionsthis.play.questionsplay是控制器的别名)。一切都是undefined。 在我看来,我用ng-repeat='question in play.questions'进行迭代,它运行正常。

然后我想也许在控制器中无法访问助手。所以我尝试了这个: this.questions = Questions.find({categoryId: this.categoryId});

但问题是我得到一个空光标。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

我假设您使用的是控制器功能,并且已使用

$reactive(this).attach($scope)

之前

this.questions = Questions.find({category: this.categoryId}); 

?不使用帮助程序时光标为空的一个原因可能是您在设置this.questions时尚未准备好订阅。因此,您应该通过将其包装在this.autorun内来使此作业具有反应性。通过这样做,一旦填充了客户端集合,光标就会更新。

我认为不是从你的控制器中调用你的帮助器,而是应该提取一个通用函数并在帮助器中使用它,而不是你需要它。如果我没有弄错(< - ?),助手实际上只用于将数据传送到UI。