Parameter an Angular ng-include übergeben

Ich versuche, die Anzeige einer binären Struktur von Elementen, die ich durch gehen rekursiv mit ng-include.

Was ist der Unterschied zwischen ng-init="item = item.left" und ng-repeat="item in item.left" ?
In diesem Beispiel verhält es sich genau das gleiche, aber ich benutze ähnlichen code in einem Projekt und da verhält es sich anders. Ich nehme an, es ist, weil der Winkel-Bereiche.
Vielleicht sollte ich nicht verwenden, ng-if, bitte erklären Sie mir, wie Sie es besser machen.

Den pane.html ist:

<div ng-if="!isArray(item.left)">
    <div ng-repeat="item in [item.left]" ng-include="'Views/pane.html'">
    </div>
</div>
<div ng-if="isArray(item.left)">
    {{item.left[0]}}
</div>
<div ng-if="!isArray(item.right)">
    <div ng-repeat="item in [item.right]" ng-include="'Views/pane.html'">
    </div>
</div>
<div ng-if="isArray(item.right)">
    {{item.right[0]}}
</div>

<div ng-if="!isArray(item.left)">
    <div ng-init = "item = item.left" ng-include="'Views/pane.html'">
    </div>
</div>
<div ng-if="isArray(item.left)">
    {{item.left[0]}}
</div>
<div ng-if="!isArray(item.right)">
    <div ng-init="item = item.right" ng-include="'Views/pane.html'">
    </div>
</div>
<div ng-if="isArray(item.right)">
    {{item.right[0]}}
</div>

Controller ist:

var app = angular.module('mycontrollers', []);

app.controller('MainCtrl', function ($scope) {

    $scope.tree = {
        left: {
            left: ["leftleft"],
            right: {
                left: ["leftrightleft"],
                right: ["leftrightright"]
            }
        },
        right: {
            left: ["rightleft"],
            right: ["rightright"]
        }
    };

    $scope.isArray = function (item) {
        return Array.isArray(item);
    }
});

BEARBEITEN:
Zuerst hatte ich das problem, dass die Direktive ng-repeat hat eine größere Priorität als die ng-if. Ich habe versucht, Sie zu kombinieren, die fehlgeschlagen. IMO ist es seltsam, dass die ng-repeat dominiert ng-if.

InformationsquelleAutor der Frage Johannes | 2014-08-29

Schreibe einen Kommentar