2013-01-11 24 views
0

的问题有问题获取文件加载正确地Require.js

所以我去年写的应用程序的客户端和一些背景信息约一半,我意识到,我需要有项目很多异步功能,所以我开始着手将大量网站功能转移到JavaScript。 I ran into a fairly major issue with my dev environment,并且为了节省时间,我的php文件中有很多的JavaScript。

在将项目交给客户端之前,我将所有javascript移动到仅由网站的不同区域分割的单独文件中。所以,我结束了一个admin.js,checkout.js,common.js等

企业的实际问题

客户端现在想要添加更多功能的网站,我想继续并将JavaScript正确地构建到不同的文件中,并将模型代码从视图代码中分离出来。

我想使用requirejs,所以我没有在每个页面的页脚中调用一堆脚本,并且也更好地处理依赖关系。

我遇到的具体问题是它似乎没有正确加载我的文件。

我main.js文件

require.config({ 
    paths: { 
    'course' : 'models/course', 
    'login_view': 'views/login/login_view', 
    'config' : 'config', 
    'views'  : 'views/views', 
    'session' : 'models/session' 
    } 
}); 

require(['login_view'], function(login_view){ 
    login_view.init(); 
}); 

我login_view.js文件

define(function() { 
    var login_view = { 
    init: function(){ 
     console.log(this); 
    }); 
    }; 
}); 

当我在我的dev的服务器我得到这个错误上加载应用程序,Uncaught TypeError: Cannot call method 'init' of undefined

任何帮助将不胜感激。

回答

2

由于一个模块必须露出其需要的模块可以操作上的接口(变量名替换,以避免命名的混乱):

//login_view.js 
define(function() { 
    var opBoard = { 
    init: function(){ 
     console.log('I am initted!'); 
    }); 
    }; 

    //expose opBoard containing init 
    return opBoard; 
}); 

//so if i required in require or depended in another module 
require(['login_view'],function(lv){ 
    //lv is the exposed opBoard from the `login_view` module 
    lv.init(); 
}); 
+0

那是它,谢谢 – nicks451