一尘不染

angular.js ng-repeat-检查条件是否为真,然后使用另一个集合

angularjs

我想知道是否可以检查内部使用什么收藏ng-repeat

例如,在我的控制器中,我有2个从服务器获取的数据数组,现在我ng-switch用来在它们之间进行切换,检查此jsbin-
http:
//jsbin.com/diyefevi/1/edit?html,js,output

问题是li我的实际应用程序中的这些视图很大,但非常相似..所以我真的想 使用1ng-repeat而不是2

所以我想知道ng-repeat="book in if list==='adultBooks' adultBooks else childBooks"在Angular中是否有可能实现?

谢谢!


阅读 222

收藏
2020-07-04

共1个答案

一尘不染

试试这个 …

在您的 控制器中

$scope.getDataSource=function(condition){

  if(condition){ return dataSource1; }
  return dataSource2;
};

在您的 HTML

ng-repeat="book in getDataSource(/*condition*/)

MVVM模式建议将逻辑始终放在控制器中,而不要放在视图(HTML)中。如果您发现自己在视图中添加了“逻辑”,那么可能会有另一种“更好”的方法。

但是仅仅为了“ 好玩 ”,您也可以这样做:

ng-repeat="book in {true: adultBooks, false: childBooks}[list==='adultBooks']"

像这样:

<li ng-repeat="book in {true: childBooks, false:adultBooks}[list==='childBooks']">{{book.name}

这是完整的示例:

http://jsbin.com/diyefevi/5/edit?html,js,输出

2020-07-04