Wie man angular-ui-router-ui-sref zu arbeiten, wenn in einer Richtlinie die Vorlage?
Grundsätzlich bin ich versucht zu ändern/anzupassen, das Verhalten des ui.bootstrap.Akkordeon. Alles funktioniert, außer für die integration mit ui-router.
Hier ist der Weg, den ich nutzen möchte der Akkordeon:
<accordion> <!-- this element is actually separate view in a parent state of the accordion-group's below.-->
<accordion-group ui-sref="site.home.newsID_1"> <!-- accordion-groups will be generated with ng-repeat.-->
<accordion-heading>
News 1
</accordion-heading>
<p>This is</p>
</accordion-group>
<accordion-group ui-sref="site.home.newsID_2">
<accordion-heading>
News 2
</accordion-heading>
<p>Home News's</p>
</accordion-group>
<accordion-group ui-sref="site.home.news.newsID_3">
<accordion-heading>
News 3
</accordion-heading>
<p>Preview and navigation</p>
</accordion-group>
</accordion>
Unten ist die geänderte Vorlage des Akkordeon:
<div ng-mouseenter="isOpen = !isOpen" ng-mouseleave="isOpen = !isOpen">
<div class="accordion-group" ng-class="{transparentBackground: isClicked}">
<div class="accordion-heading">
<a id="link" ui-sref="site" class="accordion-toggle" ng-click="isClicked = !isClicked" accordion-transclude="heading">
{{heading}}
</a>
</div>
<div class="accordion-body" collapse="!isOpen && !isClicked">
<div class="accordion-inner" ng-transclude></div> </div>
</div>
</div>
Im Grunde die " Website.home.newsID_X' müssen Sie die 'Website' Wert der ui-sref innerhalb der Vorlage.
Mein Versuch war, um den Wert von ui-sref-Attribut über die 'element' - parameter aus der accordionGroup Richtlinie verbindende Funktion, wie unten dargestellt:
link: function(scope, element, attrs, accordionCtrl) {
element.find('#link').attr("ui-sref", attrs.uiSref)
[...]
}
Bedeutet dies aktualisieren Sie die Ziel-ui-sref, aber ui-router nicht generieren entsprechende href-Element aus der referenzierten Zustand der url, also nach dem DOM ist gerendert, ich bin immer
<a ui-sref="site.home.newsID_1" href="#/site"></a>
statt der erwarteten
<a ui-sref="site.home.newsID_1" href="#/site/home/newsID_1"></a>
Was bin ich?
Ich Schätze Ihre Zeit,
Jared
InformationsquelleAutor Jared Tomaszewski | 2013-09-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht sicher, ob es neu ist oder nicht, aber es gibt einen Weg, um die übergabe von Parametern bei Verwendung von ui-sref.
In Ihrem Fall, es wäre so etwas wie dieses:
(für eine
site.home.news
Zustand in dir app, mitnewsID
- parameter über die entsprechenden URL, und wenn man bedenktnews.id
Punkte auf die Nachrichten-ID in der aktuellen$scope
)Finden Sie in der Dokumentation hier.
InformationsquelleAutor Greg
Ok, ich habe mein problem gelöst. Es scheint, dass ich war verwirrend Staaten mit urls.
Ein link mit ui-sref wird trigger Status ändern, um einen bestimmten Zustand und wird wahlweise ändern/generieren der url, wenn eine definiert ist, in dem Staat. Auch die Staaten selbst haben keine Parameter, aber die urls.
Hier ist mein Verständnis von einem Staat:
Ein Zustand, in ui-router bezieht sich auf einen Zustand, der die Webseite definiert, die in einer gegebenen html-Vorlage. Diese Vorlage definiert werden können ui-Ansichten, d.h. Platzhalter (können benannt werden) aufgefüllt wird, die von anderen Staaten. Jeder Staat kann auf ein oder mehrere ui-Ansichten in anderen Mitgliedstaaten die Vorlage mit den entsprechenden html-Vorlagen, D. H. Sie können den Inhalt dieser Vorlagen in den ui-Ansichten der anderen Mitgliedstaaten Vorlagen. Jeder Zustand kann über eine zugeordnete url, die links, die die url im browser mit dem Staat. Wenn die url im browser mit der url übereinstimmt Zusammenhang mit einem gegebenen Zustand, der Zustand der website zu ändern, d.h. den neuen Staat füllen verwiesen ui-Ansichten in anderen Staates-Vorlagen, die mit Inhalt der Vorlagen gebunden zu Ansichten, die in der derzeit aktiven Zustand.
Urls Hierarchie der Staaten, aber unabhängig von Ihnen, also einen Zustand 'Website.home " können Sie eine url '/home/content', die an eine url angehängt Zusammenhang mit übergeordneten Staat ("Website"), soweit nicht ausdrücklich gesagt, nicht zu.
Daher eine Zustandsveränderung/übergang ausgelöst werden können, entweder durch den ui-sref oder indem Sie die url per href-link oder manuell im browser durch den Benutzer.
Ein anderer Weg, um die trigger-Zustand intern ändern (für egz. im controller kann auch definiert werden, für jeden Staat), ist die Verwendung der $Staat.gehen (...) - Methode.
Verständnis, dass, ich veränderte einfach die ui-sref Verweise, href-urls. Dies ist zwar keine direkte Lösung für mein problem, und ich verstehe immer noch nicht, warum ui-router ist nicht die Generierung entsprechenden hrefs, es macht die Dinge so funktionieren, wie erwartet. Ich bin noch zu untersuchen, $Status.gehen Sie (), um zu erreichen mein Ziel.
Hi Kannst du die code...
InformationsquelleAutor Jared Tomaszewski