2016-06-10 127 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