angularjs ng在两个级别上重复,但只有一个输出
angularjs ng-repeat on two levels but just one output
我有一个看起来像这样的大对象:
scope.marketplaces = {
first_example : { ... },
second_example : { ... },
...
};
我想做的是循环通过像这样的大对象:
<section>
<ul>
<li ng-repeat="(key, value) in marketplaces"></li>
</ul>
</section>
在循环中,再次循环每个对象,但不是将类似的内容附加到DOM
<li> ... first level loop ...
<li> ... second level loop ... </li>
</li>
我希望只有一个<li></li>
,尽管我正在循环通过级别。我之所以想要这样,是因为我需要第一个循环中的key
在级别循环中被引用,并且仍然只有一个li
。
我读到ng-repeat="friend in friends | filter:searchText"
可以做我想做的事情,但我不确定在过滤器表达式中我是否可以动态地指定key
或其他需要的东西,而不是searchText
(我想这是对象的一个已知属性)。
所以我的问题是,我能用filter
实现我刚才解释的吗?或者有其他方法吗?
我希望我已经理解了这个问题:您希望在嵌套对象上有一个ngRepeat。所以有点线性化对象。
第一种方法是创建过滤器:
app.filter('linear', function() {
return function(value) {
var result = {};
for(var key in value) {
for(var cKey in value[key]) {
result[key+'_'+cKey] = value[key][cKey];
}
}
return result;
};
});
在thml中:
<li ng-repeat="(key, value) in marketplaces | linear">
{{key}}: {{value}}
</li>
但不幸的是AngularJS在过滤器中创建新元素时会出现问题。您可以在控制台中有错误消息,类型为:
10 $digest iterations reached
如果没有$$hash
的破解,您目前无法实现该功能(如果我错了,请纠正我)。
所以我认为目前的解决方案是在控制器中观察"市场",并使用与ngRepeat:中使用的控制器中相同的代码创建新对象
$scope.$watch('marketplaces', function(value) {
var result = {};
for(var key in value) {
for(var cKey in value[key]) {
result[key+'_'+cKey] = value[key][cKey];
}
}
$scope.linearMarketplaces = result;
}, true);
在HTML中:
<li ng-repeat="(key, value) in linearMarketplaces">
{{key}}: {{value}}
</li>
两种解决方案的Plunker:http://plnkr.co/edit/pYWFhqSqKAa9gpzek77P?p=preview
相关文章:
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在只能有一个asp.net表单的主页上从asp.net页面中的javascript中获取值
- 有可能在来自链接的警报中有一个值吗
- 是否<asp:文本框>有一个onFocusLost事件
- 让谷歌数据图表有一个24小时x轴
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- 当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- JQuery是否有一个“;移动“;作用或者有没有一种更紧凑的方法来做到这一点
- Regex或javascript每X个连续单词中有一个单词
- Jquery时间启动计时器,我有一个计时器的代码,但它在页面加载时启动
- 我有一个mysql的输入文本字段.那么,如何通过ajax从数据库中输出json表呢
- 我如何在 html 中复制(甚至有一个按钮来选择它)一个 document.getelementbyid 输出字段
- 如何创建一个计数器循环,该循环在单击提交按钮时启动,并输出多行单词,每个单词前面都有一个数字
- 这里我有一个HTML表单和PHP MySQL表,在表中输入值并按下提交按钮后,不会出现任何输出
- 我有一个php文件,它给出JSON输出,并希望在D3中使用JSON
- 我有一个问题,显示javascript输出没有任何用户的行动
- 我有一个消息输出,我想有一个单词橙色,其余正常