具有嵌套ng-repeat的Angular JS问题

时间:2016-03-16 13:39:53

标签: angularjs

我在这样的对象上有一个数组:

$scope.techniques = [
 {
  programmes : 'genie' , 
  documents :[
    {
     menuTag: 'Moments et Centroïdes',
     titre: "Moments et Centroïdes",
     contenu: "moment.html"
    }]
},
{
  programmes : 'test' , 
  documents :[
    {
     menuTag: 'test de test',
     titre: "test",
     contenu: "test.html"
    }]
}
];

我正在尝试使用嵌套的ng-repeat构建我的菜单,并且在stackoverflow上找到的例子不起作用。无法想象你为什么。

这是我的HTML;

<button ng-repeat="tech in techniques" class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">{{tech.programmes}}
    <span class="caret"></span>
</button>

   <ul  class="dropdown-menu">
          <li ng-repeat="doc in tech.documents"><a href="../{{doc.contenu}}" ng-cloak>{{doc.menuTag}}</a></li>
</ul>

我可以看到程序,但我看不到程序中的文档。 我做错了什么?

3 个答案:

答案 0 :(得分:2)

这是因为您正试图访问&#34; tech&#34;在第一个ng-repeat-scope之外。所以它没有嵌套。

<div ng-repeat="tech in techniques">
    <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">
       {{tech.programmes}}
       <span class="caret"></span>
    </button>
    <ul ng-repeat="doc in tech.documents" class="dropdown-menu">
        <li><a href="../{{doc.contenu}}" ng-cloak>{{doc.menuTag}}</a></li>
    </ul>
</div>

答案 1 :(得分:1)

因为您不在$ scope.techniques的迭代中。

WITH cte AS (
    SELECT ClientId
    FROM [Table]
    WHERE TypeId = 1
)
SELECT DISTINCT ClientId
FROM [Table]
WHERE ClientId IN
(
    SELECT ClientId
    FROM cte
)
AND TypeId != 3

答案 2 :(得分:1)

你的两个ng重复实际上并不是嵌套的。为了嵌套两个ng-重复,第二个ng-repeat应该在第一个ng-repeat的范围内。您无法访问“技术”。在按钮元素之外。为了使它工作,将div和ul包裹在div中,并在div上定义第一个ng-repeat而不是按钮。