2016-08-10 5 views
0

Wie ich nenne Funktion getinfo() in Erfolg employeecontroller Funktion aufrufen, die in crudApp.controller so verwendet wird, dass ich so schnell aktualisierte Tabelle erhalten kann als i-TasteWie Reglerfunktion in Winkel js

var crudApp = angular.module('crudApp', []); 
crudApp.controller("DbController", ['$scope', '$http', function ($scope, $http) { 

    getInfo(); 
    function getInfo() { 
     $http.post('select.php').success(function (data) { 
      // Stored the returned data into scope 
      $scope.details = data; 
     }); 
    } 

    $scope.deleteInfo = function (info) { 
     $http.post('delete.php', { 
      del_id: info 
     }).success(function (result) { 
      getInfo() 
      console.log(result); 
     }); 
    } 
}]); 

function employeecontroller($scope, $http) { 
    $scope.insertData = function() { 
     $http.post("insert.php", { 
      'firstname': $scope.firstname, 
      'lastname': $scope.lastname, 
     }).success(function (data, status, headers, config) { 
      console.log("Data Inserted Successfully"); 
     }); 
    } 
} 
+0

Diese Frage ergibt keinen Sinn; Mit diesem Code scheinen einige Dinge nicht in Ordnung zu sein. Insbesondere ist es nicht wirklich klar, wie Sie jemals 'employeecontroller' verwenden, da es sich nicht um einen eckigen Controller handelt und Sie den HTML-Code nicht anzeigen. – Claies

Antwort

0

in Erfolg einreichen klicken von employeecontroller Funktionsaufruf unter Verwendung getInfo .injector()

REF: AngularJS. How to call controller function from outside of controller component

function employeecontroller($scope, $http) { 
            $scope.insertData = function() { 
             $http.post("insert.php",{ 
              'firstname': $scope.firstname, 
              'lastname': $scope.lastname, 
             }).success(function (data, status, headers, config) { 
              console.log("Data Inserted Successfully"); 
              angular.element(document.getElementById('yourControllerElementID')).injector().‌​getInfo('$rootScope'); 
             }); 
            } 
           } 
+0

während dies funktionieren würde, gibt es keine Notwendigkeit, dies zu tun, und viele Gründe nicht zu. – Claies

-1

Dies sollte idealerweise über die Ereignisverteilung erfolgen. Wenn employeecontroller ein Controller von crudApp ist (sieht nicht so aus, wie der Code, der von Ihnen geteilt wurde), dann kann er über $ rootScope, $ broadcast und $ scope. $ On erfolgen. Wenn dies nicht der Fall ist, kann dies durch Versenden von JavaScript-Ereignissen erreicht werden. Das Ereignis wird in DbController angehört.

0

OK. Vor allem, ich weiß nicht, welche eckige Version Sie verwenden, könnte es hilfreich sein.

Zweitens nehme ich an, dass Sie 2 verschiedene Controller wollen. Jeder Controller hat seinen eigenen $ scope. Wenn Sie allgemeine Funktionen wünschen, haben Sie 2 Optionen:

1. (Empfohlen) Verwenden Sie einen utils-Dienst oder eine Klasse 2. Deklarieren Sie sie im $ rootScope. Dann sind sie im gesamten Modul (crudApp) mit "$ rootScope.getInfo();"

PD. Im Moment haben Sie nur einen Controller deklariert. Aber ich denke du willst 2 verschiedene Controller dekalieren.

+1

sollten Sie * niemals * die Verwendung von '$ rootScope' dafür empfehlen; Verwenden von '$ rootScope', um Daten über Controller hinweg zu teilen, ist ein Anti-Pattern. – Claies

+0

Vielen Dank für den Rat :) Es ist gut, korrigiert zu werden, um zu lernen. Dann empfehle ich den Service ?, oder was würden Sie tun? –

+0

Ja, der vollständige Grund für die Existenz von Services besteht darin, eine gemeinsame Funktionalität bereitzustellen. Die übermäßige Verwendung von $ rootScope führt zu Code, der schwer zu debuggen ist. – Claies