2017-05-30 1 views
0

Ich habe ein Array von "Aktion" -Objekten. Jedes Objekt hat einen Status: "gemeistert" oder "neu".Ng-Repeat und Winkelfilter

Auf einer nav-tab, zeige ich die "neuen" Aktionen:

<div ng-repeat="x in main.actions | filter: {status: '!mastered'} > 

<div class="btn-group"> 
    <label ng-model="x.status" uib-btn-radio="'new'"><label> 
    <label ng-model="x.status" uib-btn-radio="'mastered'"></label> 
</div> 

</div> 

Auf einem separaten nav-tab, ich die gemeistert Aktionen zeigen. Mein Code dort ist identisch mit Ausnahme des Filters, der in der ng-Wiederholung enthalten ist.

Durch Klicken auf diese Optionsfelder kann der Status einer Aktion von "neu" auf "gemeistert" geändert werden. Alles funktioniert wie beabsichtigt, aber wenn ich den Status einer Aktion ändere, kehrt das gesamte SPA zur Hauptseite zurück!

Warum ist das? Was muss ich tun, um das zu verhindern?

Antwort

0

Sie können konsolidieren, so dass Sie nicht unbedingt für jeden Status eine andere Registerkarte verwenden müssen. Versuchen Sie etwas Ähnliches.

Code:

<div ng-repeat="x in main.actions | filter: {status: stat} "></div> 


<div class="btn-group"> 
    <label ng-model="x.status" uib-btn-radio="'new'" ng-click="stat = 'new'"><label> 
    <label ng-model="x.status" uib-btn-radio="'mastered'" ng-click="stat = 'mastered'"></label> 
</div> 

Dies sollte jetzt filtern Sie Ihre ng-repeat basierend auf den Button klicken, um.

+0

Vielen Dank für Ihre Antwort. Ich bin mir nicht sicher, ob ich ihm folge. Ich muss die Trennung beibehalten - es gibt tatsächlich 5 verschiedene Status, und ich brauche die "gemeisterten" Aktionen auf ihrem eigenen Tab. Ich möchte die Möglichkeit beibehalten, den Status einer Aktion so zu ändern, dass sie von der Hauptregisterkarte zur Hauptregisterkarte verschoben werden kann. –

+0

Der obige Code gibt Ihnen immer noch die Wirkung verschiedener Tabs, aber es würde Ihre Codierung auf ein Minimum beschränken. Wenn Sie darauf bestehen, sie getrennt zu halten, ist das in Ordnung, aber Sie müssen mehr Code bereitstellen als das, was Sie oben angegeben haben, damit jemand weiter helfen kann. Könnten Sie das tun oder ein jsFiddle mit dem Problem erstellen? – Ohjay44