Angular - Bestimmte Methode eines Controllers aufrufen

Saheeda

Mitglied
Hi,

Javascript:
$routeProvider
            .when('/contact/:id', {
                templateUrl: '/contact',
                controller: "ContactController"
            });
}]);

Ich möchte nicht für jede Action einen eigenen Controller schreiben, sondern mehrere ähnliche in einem Controller bündeln. Dazu müsste ich im routeProvider eine bestimmte Funktion des Controllers aufrufen können. ContactController.method() wird sowohl mit, als auch ohne Klammern als Controller-Name interpretiert.

Laut Doku könnte ich auch controller:function(){} anstelle des Controller- Namens schreiben, aber ich möchte das nicht zu sehr verschachteln.

Wie kann ich also eine bestimmte Methode aufrufen?

Vielen Dank!
 
Sowas ist in AngularJS ist nicht vorgesehen. Ein Controller ist für eine Seite oder einen $scope gültig.

Aber kannst dir mal UI-Router angucken. Evtl. gefällt dir das Routing besser.

Grüße Marv
 
Hm, schade.

Gleich noch ne andere Frage:
Das Projekt ist mein erster Versuch, eine REST-Api zu bauen. Dazu habe ich mit Symfony einige Controller erstellt, welche mir meine Entities im JSON-Format liefern.

Im JS rufe ich jetzt über $http.get('/api/irgendwas) die Daten ab, weise sie den entsprechenden Variablen zu und füge sie ihns Template ein.

Frontend:
Javascript:
AllContactsController.$inject = ['$scope', '$http'];
function AllContactsController($scope, $http) {
    $http.get('/api/v1/contacts')
        .success(function (data) {
            $scope.contact = data;
            $scope.$emit('setTabEvent', 2);
        })
        .error(function (error) {
            console.log(error);
        });
}

Backend:
PHP:
class ContactController extends FOSRestController{

public function getAllContactsAction()
    {
        $em = $this->getDoctrine()->getManager();
        $entities = $em->getRepository('AppBundle:Contact')->findAll();
        $view = $this->view($entities, 200);
        return $this->handleView($view); //parst Entitäten in einen JSON-String

    }
}


Ist das normal, dass ich quasi immer zwei Controller für jede Action habe?
Einen im Backend, der mir die Daten liefert, und einen im Frontend, der die Daten empfängt.
Oder baue ich gerade Grütze?
 
Es ist vollkommen normal das man quasie 2 Controller hat.

Ich persönlich finde Symfony aber auch ein wenig zu mächtig für eine JavaScript WebApp. Ich würde da evtl. eher auf Silex oder mein Favourite Slim zurückgreifen.

Ach und es gibt eine angenehmere Variante REST-Requests mit AngularJS zu handlen, schaue mal hier: https://docs.angularjs.org/tutorial/step_11

Grüße Marv
 
@VanHellsehn

Vielen Dank!

Die Idee mit Symfony kam von meinem Ausbilder. Es geht mehr darum, dass ich mich überhaupt erstmal mit den Themen auseinandersetze und verstehe, wie das funktioniert. ;-)
 

Neue Beiträge

Zurück