将值从 html 传递到 AngularJS 控制器

Passing value from html to AngularJS controller

我正在使用 Angular Meteor 并且我有一个订阅发布复合发布的控制器,其中 returns 两个游标。我想要做的是在一个游标上 ng-repeat 并根据第一个游标的值从第二个游标获取值。像这样:

{{getName(a.id)}}

其中 a 是第一个游标的一个对象,在控制器中我有 $scope.getName(id) 函数 returns 来自第二个游标的名称,如下所示:

name = second.find({ID: id}).fetch()[0].name

它有效,但问题是 getName 函数被不必要的次数命中。有没有更好的方法根据第一个游标的 ng-repeat 对象从第二个游标获取数据?是嵌套ng-repeat的办法吗?我该怎么做?

谢谢。

看来您很注重ng-repeat的表现。很高兴你有这种感觉!据我所知,ng-repeat 一直是许多第 3 方库和讨论的优化重点。

对于您的情况,我的第一次尝试是仅将 ng-repeat 中的值绑定一次。您可以在表达式上使用 :: 语法来执行此操作。

例如,这会调用一次表达式。

<ul ng-repeat="a in items">
  <li>{{::getName(a.id)}}</li>
</ul>

在你的问题末尾提到了嵌套重复,但你的问题只提到了它的一次使用。我错过了什么吗?

免责声明:我从未使用过 Angular Meteor(甚至是独立的 Meteor),因此很可能有更好的方法来解决您的问题。

来自:https://docs.angularjs.org/guide/expression