javascript
  • mysql
  • angularjs
  • node.js
  • 2016-03-22 8 views -1 likes 
    -1

    Ich habe eine MySQL Datenbank und ich nehme Daten von ihm mit Node JS. Ich benutze auch AngularJS für Live-Suche in ihm. Hier ist ein Teil meiner HTML-Code:Finden Sie dynamische Daten von MySQL mit Javascript

    <div class="songlist" ng-controller='another_control'> 
          <table id="songlistTableR" ng-app='test_table' ng-controller='main_control'> 
          <tr><th>Название</th><th>Ссылка</th></tr>  
          <tr ng-repeat="data in loaded | filter:search"> 
           <td><i class="fa fa-plus"></i>{{data.song_name}}</td> 
           <td><a href="{{data.link}}" target='_blank'>Youtube</a></td>  
          </tr> 
          </table>  
         </div> 
    

    Teil des Knotens Serverdatei:

    app.get('/load',function(req,res){ 
    
        connection.query("SELECT * FROM test_table",function(err,rows,fields){ 
         if(err) throw err;  
         res.end(JSON.stringify(rows));    
        }); 
    }); 
    

    Und JS 'Kern' file:

    app.controller('main_control',function($scope,$http){ 
        load(); 
        function load(){ 
         $http.get("http://localhost:7001/load").success(function(data){ 
          $scope.loaded=data; 
         }); 
        } 
    }); 
    

    Frage: Ich muss haben Zugriff auf diese Daten aus der Datenbank in einer anderen JS-Datei. Zum Beispiel möchte ich alert(data[1].song_name). Wie es geht?

    UPD: Ich habe einen Teil des HTML-Codes aktualisiert, aber es funktioniert auch nicht.

    +0

    ich konnte deine Frage nicht so sehr verstehen, könntest du es ausarbeiten? –

    Antwort

    0

    einfachste Art und Weise statt mit rootscope of scope wird,

    app.controller('main_control',function($scope,$http, $rootScope){ 
        load(); 
        function load(){ 
         $http.get("http://localhost:7001/load").success(function(data){ 
          $rootScope.loaded=data; 
         }); 
        } 
    }); 
    

    Sie diese Daten von einer anderen Richtlinie, Controller oder eine Dienstleistung durch die Injektion von $ rootScope dann den Aufruf von $ rootScope.loaded

    in einem anderen zugreifen können Controller,

    app.controller('another_control',function($scope,$http, $rootScope){ 
         $scope.data = $rootScope.loaded; 
    
         $scope.$watch('data', function(n) { 
    if(angular.isDefined(n)) { 
    alert(n[1].song_name); 
    } 
    }) 
        }); 
    

    aber da Sie Asynchron-Daten anfordern, müssen Sie entweder die Alarmfunktion ausgelöst wird, um den Wert oder mit einem bu beobachten tton oder so.

    dann können Sie später in Localstorage, Dienste, etc. nachsehen, um eine bessere Lösung zu finden.

    +0

    Ich verstand in diesem Skript über rootScope, aber wie rootScope in eine andere JS-Datei injizieren? –

    +0

    Ich werde die Antwort bearbeiten –

    +0

    Danke! Wo fügt man 'another_control' in HTML ein und warum kann ich' main_control' auch nicht benutzen? –

    Verwandte Themen