2016-06-10 183 views
0
<div ng-repeat="item in items | limitTo:$parent.limit=($parent.limit||5)"> 
    ... 
    <a ng-if="$last" ng-bind="$parent.limit===Infinity ? 'Read Less':'Read More'" ng-click="$parent.limit=$parent.limit===Infinity?5:Infinity"></a> 
</div> 

因此,初始限制只有5个项目,并且点击链接会更改阅读更多/更少阅读的文本。但是ngRepeat不会接受更改并添加/删除项目。我想在更改$parent.limit变量时更新ngRepeat。如果可能,我想避免使用控制器。AngularJs ngRepeat不会更新变量变量

+0

使用$父母是一个巨大的代码气味。调用你的作用域的方法,并把逻辑放在那里。 ng-repeat和ng - 如果两者都定义了自己的范围。 –

+0

@JBNizet这将是我的计划B.我有很多ng-repeats在我们的应用程序中更新,并且避免将控制器用于这样一个简单的任务会很好。主要是因为我的工作和同事都坚持单元测试一切,并在任何地方复制和粘贴相同的东西,只是改变变量名称就像观看油漆干燥一样令人兴奋。 – Matt

回答

0

ng-repeat指令我相信为它的子项创建另一个范围。那么你会而不是正在谈论与<div>元素中提到的同一父母。因此,在您的<a>标签中,您可能需要与父母的父母范围进行交谈。

因此请尝试$parent.$parent而不是您的ng-repeat内的锚标记中的$parent

当然这样做会使得AngularJS神流下了眼泪,所以我建议创建一个控制器调用你的ng-click的方法,将传播到他的模板电流控制器。然后你可以移动你的模板之外的所有逻辑。

+0

好的AngularJS神今天赢了。太糟糕了,他们不会从天堂降下来,并帮助我做额外的工作。 $ parent。$ parent不更新,但使用控制器。 – Matt