Javascript AngularJS:有没有比指定的更好的方法来实现这一点?

Javascript AngularJS:有没有比指定的更好的方法来实现这一点?,javascript,html,angularjs,twitter-bootstrap,dry,Javascript,Html,Angularjs,Twitter Bootstrap,Dry,我使用一个生成引导选项卡布局的模板。如下图所示: <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

我使用一个生成引导选项卡布局的模板。如下图所示:

<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>
对于这样的JSON层次结构,我基本上需要重复两次。一次用于
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>

  • ...

{{f}

...
编辑: 所以我的问题是,有没有更聪明的方法来实现这一点,使用一次
ng repeat
,而不是两次执行“foo in data”


如果我的问题不清楚,很抱歉。

使用
ng include
$templateCache
而不是
ng repeat
。例如:

var-app=angular.module('foo',[]);
函数foo($templateCache)
{
var模型=
{“数据”:
[
{“名称”:“堆栈”,
“描述”:[“交换”、“溢出”]
}
]
},
光标,i,bar=baz=“”;
对于(i=0;i”,model.data[i]。name,“”;
baz=baz.concat(“
  • ”,model.data[i].desc.join().replace(/,/g,“
  • ”); } $templateCache.put('name',bar); $templateCache.put('desc',baz); } app.run(foo)
    
    

        您不能在JSON调用后简单地分配两次吗?在控制器中:
        $scope.data=response$scope.data2=响应和第二次ng重复将是数据2中的
        foo
        -不是理想的,而是一个选项?
        <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>