angularjs:嵌套的ng-repeat重复多次外部数组的长度

时间:2016-07-07 10:55:03

标签: arrays angularjs angularjs-ng-repeat

我不知道为什么ng-repeat重复多次外部数组的长度。这是数组:

$scope.giornieventi = [{
    Intestazione: "Questa settimana",
    Eventi: [{
            Nome: "Giacomo",
            Immagine: "",
            Url: "://www.....",
            Data: "Oggi"
        },
        {
            Nome: "Giacomo2",
            Immagine: "",
            Url: "Ciao",
            Data: "Domani"
        }]
},
{
    Intestazione: "Settimana successiva",
    Eventi: [{
            Nome: "Roberto",
            Immagine: "",
            Url: "Ciao",
            Data: "Oggi"
        },
        {
            Nome: "Roberto2",
            Immagine: "",
            Url: "Ciao",
            Data: "Domani"
        }]
}];

这是ng-repeat它不能正常工作:

<div ng-repeat="giorno in giornieventi">
    <h3 ng-show="alertData(giorno.Intestazione)">@{{ giorno.Intestazione }}</h3>
    <article ng-repeat="evento in giorno.Eventi">
        @{{ evento.Nome }}
    </article>
</div>

这是控制功能:

$scope.alertData= function(Intestazione) {
    alert(Intestazione); return true;
}

奇怪的行为是我得到警报4次而不是2次,我不知道为什么。

1 个答案:

答案 0 :(得分:1)

除了使用ng-show获取提醒外,您的代码还可以。 ng-show每次在范围内的某些内容发生变化时进行评估,以确定是否应该显示该元素,因此您看到所有事情都发生了两次(使其成为4个警报而不是2个),因为AngularJS会对ng-show进行两次评估。

尝试将其更改为ng-init,该元素在加载元素时运行一次:

<div ng-repeat="giorno in giornieventi">
    <h3 ng-init="alertData(giorno.Intestazione)">@{{ giorno.Intestazione }}</h3>
    <article ng-repeat="evento in giorno.Eventi">
        @{{ evento.Nome }}
    </article>
</div>

这是一个工作小提琴:http://jsfiddle.net/Lvc0u55v/6618/