2017-10-25 2 views
0

Ich bin neu in AngularJS. Ich benutze WebSQL für die Datenbank und ich habe ein Problem, meine Datei zu betreiben. Ich habe 2 Javascript-Datei mit den Namen service.js und controller.js.Wie Variablen von einem Javascript zu einem anderen Javascript aufrufen?

service.js:

var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); 

      db.transaction(function (tx) { 
       var sql = ('CREATE TABLE IF NOT EXISTS CART (id unique, name, price)'); 
       }); 

      function addToCart(id, name, price){ 
       db.transaction(
         function (tx) { 
          tx.executeSql(
           "INSERT INTO CART (id, name, price) VALUES (NULL, ?, ?);", 
            [data.name, 
            data.price, 

            ], 
        ); 
      } 

controller.js:

angular.module('login').controller('Controller', 
     ['Service', '$scope','$state', '$webSql', function(Service, $scope,$state,$webSql) { 

      var self = this; 
      self.addToCart = addToCart; 
      self.database = Service.db; 


      function database(){ 
       self.database = db; 
       return database; 
      } 

      function addToCart(id, name, price) { 
       alert("Success add to your cart" + id); 
      } 
      } 
     ]); 

Wie ich meine db von Service.js nennen kann Controller.js?

+0

den Link zu sehen: https://stackoverflow.com/questions/16023451/binding-variables-from-service-factory-to-controllers –

Antwort

0

Sie haben Ihre Variable in dem Objekt des Dienstes heißt, etwas zu definieren, wie:

this.db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); 

     this.db.transaction(function (tx) { 
      var sql = ('CREATE TABLE IF NOT EXISTS CART (id unique, name, 
      price)'); 
      }); 

     function addToCart(id, name, price){ 
      this.db.transaction(
        function (tx) { 
         tx.executeSql(
          "INSERT INTO CART (id, name, price) VALUES 
(NULL, ?, ?);", 
           [data.name, 
           data.price, 

           ], 
       ); 
     } 

Dann haben Sie Ihren Dienst zu importieren, was auch immer der Name des Service ist, lässt globalService sagen.

angular.module('login').controller('Controller', 
    ['globalService', '$scope','$state', '$webSql', function(globalService, $scope,$state,$webSql) { 

     var self = this; 
     self.addToCart = addToCart; 
     self.database = globalService.db; 


     function database(){ 
      self.database = db; 
      return database; 
     } 

     function addToCart(id, name, price) { 
      alert("Success add to your cart" + id); 
     } 
     } 
    ]); 
+0

Danke Herr, sagte _TypeError in meiner Konsole: Kann Transaktion nicht lesen Eigenschaft‘ 'von undefined_ –

+0

war es schon mal für dich? wenn du var. Da es keine Änderung gibt, ist nur die Änderung "dies", die die Funktionalität nicht beeinflusst. Wenn es vorher nicht funktionierte, müssen Sie die Funktionen in Ihrem db überprüfen, indem Sie es debuggen. – vertika

Verwandte Themen