2016-04-08 8 views
0

Ich bin immer ein Problem aktualisieren Sie den Wert in der Ansicht zu reflektieren, ich will nicht die komplette Seite, weil seine sehr teuer laden Sie die Seite laden,Wie insbesondere div im html

Ich habe zwei Controller (Controller1 und Controller2), ein Service (Service1) und zwei Ansichten (modalwindow.html und product.html). Das Szenario lautet: 1. Benutzer ist auf Product.html (enthält mehrere Akkordeons) und Benutzer schließen alle Akkordeons explizit.

2.User hat auf das Symbol geklickt, das das modale Fenster geöffnet hat, da es das modale Fenster geöffnet hat, wird es die URL auf der Adressleiste nicht ändern.

3.Modal Fenster (Modalwindow.html) hat den Link Produkt anzeigen, da die Produktseite ist die aktive Seite (Show Produkt ist das Akkordeon, das vom Benutzer explizit geschlossen) auf dem Browser.

  1. auf dem Klick auf Link, soll entsprechendes Akkordeon auf der product.html offen

ich zwischen modalen Fenstern Controller kommunizierte (controller2.js) und Produktseite (controller1.js) durch Service (service.js), ich rufe controller2

, wie dieses Problem zu beheben, ohne eine komplette Seite geladen

+1

Können Sie eine Geige erstellen, die Ihr Problem neu erstellt? Es könnte helfen, Ihre Frage zu verstehen und zu lösen. – sniels

+0

Hallo Snels, versucht, die ähnliche Art von Programm mit Akkordeons zu erstellen http://jsfiddle.net/8MVLJ/1461/ – Ravi

+0

Das Modal scheint nicht für mich zu arbeiten. – sniels

Antwort

0

Unter der Annahme der modalen schließt, wenn ein Produkt ausgewählt wird, kann es return the value to the calling controller. Dann öffnet es das angegebene Akkordeon.

+0

Brent, eigentlich verwende ich Event-Handler für den Aufruf des Produktcontrollers von ModalController, so dass es den Wert perfekt im Controller aktualisiert, aber dieser Wert spiegelt nicht die Ansicht (Produkt.html) – Ravi

+0

Das Modal erstellt einen neuen $ scope. Möglicherweise müssen Sie den Wert vom Modal an den Controller übergeben. –

0

Ich fummelte in deiner Geige herum. Sie mischen zwei Arten, Ihre Kategorien in der Geige zu zeigen: einen Akkordeon-Wert und zwei boolesche Werte (KategorieAccordion, productAccordion). Ich habe mich für eine Methode entschieden und es scheint mit dem eventCallback zu funktionieren. Außerdem hast du im eventCallback falsch nach deinen Argumenten gecheckt. Sie übergeben es als Array zurück, also holen Sie sich zuerst den Wert aus dem Array. Auch Sie überprüft fälschlicherweise für Ihren 'args' im eventCallback.`

if (args[0] == 'Product') { 
    $scope.productAccordion = true; 
    $scope.categoryAccordion = false; 
} else { 
    $scope.productAccordion = false; 
    $scope.categoryAccordion = true; 
} 

fiddle See.


Sollte es nicht in Ihrem realen Code arbeiten werden, könnte es etwas mit dem folgenden SO question zu tun hat.