如何使用require.js在两个javascript文件之间传递参数

时间:2015-08-27 23:16:03

标签: javascript jquery requirejs

我试图使用require.js传递参数,无论是对象,数组,数字还是字符串,但是我有一个问题,接收参数显示我 undefined

对象

estudiante: Object
ApelEstu: "Vides"
CeduEstu: "11223344"
FacuEstu: "Tecno e Ing"
Login_Usuario: "dfvides"
NombEstu: "Diego"
ProgEstu: "Sistemas"
RolEstu: 1
Semestre: 10

索引

require(['configuracion'], function (){

           require(['login']);

        });

配置(require.js)

requirejs.config({
baseUrl: 'js',
paths: {        

    jquery: ['librerias/jquery-1.11.2.min',            
              'librearias/jquery-2.1.3.min'],

    login: 'proyecto/login',     
    database: 'proyecto/db'

}


});

login.js(数据包含对象)

console.log(data);
        var estu = data.estudiante;
        //console.log(estu);

        base.iniciarbase();
        base.guardar(estu);

db.js(包含模块)

define(function (){

   var database = {

       crear: function(){} --> done,
       tablas: function(){} --> done,
       insertarperfil: function(){} --fail
                };
    });

    return {

      iniciarbase: function (){
          return database.tablas();
      },

      guardar: function (){
          return database.insertarperfil();
      }

  };
    });

函数插入参数

insertarperfil: function (Estudiante){

        console.log(Estudiante);
        var db, SqlGuardar, SqlDelete, SqlBuscar, mostrar;

        db = database.crear();
        SqlBuscar = 'SELECT * FROM Estudiante';
        SqlGuardar = 'INSERT INTO Estudiante(cedula, nombre, apellido, rol, facultad, programa, semestre) VALUES(?,?,?,?,?,?,?)';                                              
        SqlDelete = 'DELETE FROM Estudiante';

        db.transaction(function (tx) {

        tx.executeSql(SqlBuscar, [], function (tx, results){

            mostrar = results.rows.length;

            if (mostrar === 0){                      

                tx.executeSql(SqlGuardar, [Estudiante.CeduEstu, Estudiante.NombEstu, Estudiante.ApelEstu, Estudiante.RolEstu, 
                                           Estudiante.FacuEstu, Estudiante.ProgEstu, Estudiante.Semestre]); 




            }else{

                tx.executeSql(SqlDelete);

                tx.executeSql(SqlGuardar, [Estudiante.CeduEstu, Estudiante.NombEstu, Estudiante.ApelEstu, Estudiante.RolEstu, 
                                           Estudiante.FacuEstu, Estudiante.ProgEstu, Estudiante.Semestre]);



            }

        });

    });

    }

函数return saludo

saludoestu: function (){

        var db, saludo, SqlConsulta;

        db = database.crear();
        //id = metodosestu.setCedulaEstu();
        SqlConsulta = 'SELECT nombre, apellido FROM Estudiante';

        db.transaction(function (tx) {

            tx.executeSql(SqlConsulta, [], function (tx, results){

                var numero = results.rows.length;
                //var saludo = new Object();

                for (var i=0;i<numero;i++){

                    saludo = {
                         nombre: results.rows.item(i).nombre,
                         apellido: results.rows.item(i).apellido
                    };
                    //console.log(saludo);                    
                }
                return (saludo);

            });

        });

    }

     return {


      saludar: function (){
          return database.saludoestu();
      }

  };

登录中的呼叫功能

var n =  base.saludar(saludo);
            console.log(n);

在他之上使用原型,但我也只在新项目中抛出相同的错误,旧的原型工程项目

1 个答案:

答案 0 :(得分:0)

要从其他模块导入代码,请在您的define函数中包含require

define(function(require) { // <=== use require
   var db = require('pathToFile/db'); // <=== get file

   var iniciarbase= db.iniciarbase; // <=== call function from another module
   console.log(iniciarbase);

   var guardar= db.guardar;
   console.log(guardar);
});

编辑:在像api这样的模块中使用return,只公开你想要其他模块使用的函数:

define(function (){

   var database = {

       crear          : function(){}, // include comma
       tablas         : function(){}, // include comma
       insertarperfil : function(){} // no comma

    });

    return {

      iniciarbase : database.tablas, // don't use ()
      guardar     : database.insertarperfil

  };
});

编辑2:

login.js

define(function(require) { // <=== use require
   var db = require('./database'); // <=== get file

    var estu = {
        'ApelEstu': "Vides",
        'CeduEstu': "11223344",
        'FacuEstu': "Tecno e Ing",
        'Login_Usuario': "dfvides",
        'NombEstu': "Diego",
        'ProgEstu': "Sistemas",
        'RolEstu': 1,
        'Semestre': 10
    };

    db.iniciarbase(); 
    db.guardar(estu); // <=== pass object to db module
});

db.js

define(function (){

   var database = {

       crear: function(){},
       tablas: function(){},
       insertarperfil: function(estu){ // <=== pass estu
          // do stuff here with estu
       } 
    });

    return {

      iniciarbase: function (){
          return database.tablas();
      },

      guardar: function (estu){ // <=== FORGOT TO ADD estu HERE
          return database.insertarperfil(estu); 
      }

  };
    });