2013-05-10 131 views
0

我一直在开发一个新项目并且最近在项目中开始使用require.js使用requirejs时无法调用函数

这一切似乎正常工作,直到我试图使从application.js调用dashboard.js标签#dailyTab#weeklyTab被点击时或访问varialbe var a在仪表板,JS。我的代码如下

main.js

requirejs.config({ 
    baseUrl : '../static/js/', 
    paths : { 
     'jquery' : 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min', 
     'jquery-ui' : 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min', 
     'bootstrap' : ['//netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/js/bootstrap.min', 'bootstrap.min'], 
    }, 
    shim : { 
     'bootstrap' : ['jquery'], 
     'bootswatch' : ['bootstrap'], 
    } 
}); 

require(["jquery", "jquery-ui", "bootstrap", "dashboard", "application"], function($, jui, bootstrap, dashboard, application) { 
    $("#myTab a:first").tab("show"); 
}, function(err) { 
    console.log(err) 
}); 

dashboard.js

define(function() { 
    var a = 10; 
    var Reload = { 
     dailyCharts : function() { 
      console.log("Daily Charts"); 
     }, 
     weeklyCharts : function() { 
      console.log("Weekly Charts"); 
     } 
    }; 
    var Display = { 
     none : function(node) { 
      console.log("none"); 
     }, 
     block : function(node) { 
      console.log("block"); 
     } 
    } 
}); 

的application.js

define(["jquery", "dashboard"], function(jquery, dashboard) { 
    $("#dailyTab").click(function() { 
     dashboard.Reload.dailyCharts(); 
    }); 
    $("#weeklyTab").click(function() { 
     dashboard.Reload.weeklyCharts(); 
    }); 
}); 

有人能告诉我我做错了什么,或者我能做些什么来解决这个问题。我接受我的编码技能不是很好。

任何帮助,这是非常感谢。 在此先感谢

回答

2

那么,你的dashboard.js没有返回任何东西。 application.js将如何使用它?

define(function() { 
    var a = 10; 
    var Reload : {...}; 
    var Display : {...}; 
    //return the interface 
    return { 
     Reload : Reload, 
     Display : Display 
    } 
}); 
+0

早些时候,我试着用'return {}'把它们全部包装起来,让我试着把变量放在块之外。 – shabeer90 2013-05-10 09:03:17

+0

@ shabeer90你可以返回一个引用对象。您不需要将所有代码移动到返回的对象中。 – Joseph 2013-05-10 09:04:27

+0

好的,我现在看到你的更新代码,让我试试看。 – shabeer90 2013-05-10 09:05:20