【问题标题】:How to call variables from one javascript to another javascript?如何将变量从一个 javascript 调用到另一个 javascript?
【发布时间】:2017-10-25 07:20:58
【问题描述】:

我是 AngularJS 的新手。我将 WebSQL 用于数据库,但我在操作文件时遇到了一些问题。我有 2 个名为 service.jscontroller.js 的 javascript 文件。

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);
            }
            }
        ]);

如何将我的数据库从 Service.js 调用到 Controller.js?

【问题讨论】:

标签: javascript angularjs web-sql


【解决方案1】:

您必须在服务对象中定义您的变量,例如:

  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, 

                              ],
                 );
        }

然后您必须导入您的服务,无论您的服务名称是什么,比如说 globalService。

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);
        }
        }
    ]);

【讨论】:

  • 谢谢先生,在我的控制台中说 TypeError: Cannot read property 'transaction' of undefined
  • 以前对您有用吗?当您使用 var 时。由于没有变化,唯一的变化是“这个”,不会影响功能。如果它之前没有工作,那么你必须通过调试它来检查你的数据库中的功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
  • 2011-01-24
  • 1970-01-01
相关资源
最近更新 更多