Abh*_*L R 5 html javascript dry twitter-bootstrap angularjs
我使用生成Bootstrap选项卡布局的模板.如下所示:
<div class="a">
<ul class="nav nav-bar nav-stacked" role="tabs">
<li><a href="#home"></a></li>
...
</ul>
<div class="tab-content">
<div id="home">abc</div>
...
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
现在,这是一个非常简单明了的标签导航,可以进行硬编码和实现.
我有一个ng-repeat关于ul's li和tab-content的动态div.
我从REST服务获得的JSON包含选项卡的数据以及要在单个对象中的选项卡内容中显示的内容.例如:
{
"0": "a": [{ // a- tab data
"0": "abc", // abc - data to be displayed inside the tab-content
"1": "xyz"
}]
...
}
Run Code Online (Sandbox Code Playgroud)
有了这样的JSON层次结构,我基本上需要两次ng-repeat.对于ul li选项卡内容的一次和一次,因为选项卡的每个对象都包含与其相关的数据.
所以我到目前为止所做的是:
<div class="a">
<ul class="nav nav-bar nav-stacked" role="tabs">
<li ng-repeat="foo in data"><a href="#home">{{foo.name}}</a></li>
...
</ul>
<div class="tab-content">
<div id="home" ng-repeat="foo in data">
<p ng-repeat="f in foo.desc">{{f}}</p>
</div>
...
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
编辑:所以我的问题是,是否有一种更聪明的方法来实现这一点,ng-repeat而不是两次做"foo in data"?
对不起,如果我的问题不明确.
使用ng-includewith$templateCache而不是ng-repeat. 例如:
var app = angular.module('foo', []);
function foo($templateCache)
{
var model =
{"data":
[
{"name": "Stack",
"desc": ["Exchange", "Overflow"]
}
]
},
cursor, i, bar = baz = "";
for (i = 0; i < model.data.length; i++)
{
bar = bar.concat("<li>", model.data[i].name,"</li>");
baz = baz.concat("<li>", model.data[i].desc.join().replace(/,/g,"</li><li>") );
}
$templateCache.put('name', bar);
$templateCache.put('desc', baz);
}
app.run(foo);Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="foo">
<ul ng-include="'name'"></ul>
<ul ng-include="'desc'"></ul>
</div>Run Code Online (Sandbox Code Playgroud)
参考
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |