2015-10-06 84 views
-1

是否有可能在RequireJS中创建一个对象?内部调用函数RequireJS

因为,通过这种方式,FunctionAClick事件中可见:

require(["library1", "library2"], function (obj1) { 
    $('#loginButton').click(function() { 
     functionA(); 
    }); 
    functionA() { 
     obj1.value; 
    } 
}); 

但是,如果我这样做,这是行不通的:

var library = new library(); 
require(["library1", "library2"], function (obj1) { 
    $('#loginButton').click(function() { 
     library.functionA(); 
    }); 
}); 

function library() { 
    this.functionA = function() { 
     obj1.value; 
    } 
} 

var library = new library(); 
$('#loginButton').click(function() { 
    library.functionA(); 
}); 

functionA() { 
    require(["library1", "library2"], function (obj1) { 
     this.functionA = function() { 
      obj1.value; 
     } 
    }); 
} 

这可能吗?

+0

看一看[将参数传递给Require.js模块(http://stackoverflow.com/questions/17382291/passing-parameters-to-require-js-module) – halfzebra

+0

我认为他不是在制作一个模块,而是在线地“需要”。我会认为''''会在'require'调用中创建的闭包捕获。 – zero298

回答

0

我不确定为什么你明确的例子不起作用。不过,我建议您确保在require声明中对jQuery进行依赖。

以下是使用dojo,它使用AMD环境,如RequireJS。我只是想确保我能够为我的示例加载多个模块,并且RequireJS还没有像dojo那样的模块。

我能够通过修复依赖关系来获得第二个示例。

var library = new library(); 
 

 
require(["dojo/dom", "jquery"], function(dom, $) { 
 
    $('#button').click(function() { 
 
    library.functionA(); 
 
    }); 
 
}); 
 

 
function library() { 
 
    this.functionA = function() { 
 
    console.log("hello"); 
 
    } 
 
}
<script> 
 
    var dojoConfig = { 
 
    parseOnLoad: false, 
 
    isDebug: true, 
 
    async: 1, 
 
    packages: [{ 
 
     name: "jquery", 
 
     location: "//code.jquery.com", 
 
     main: "jquery-1.11.3.min" 
 
    }] 
 
    }; 
 
</script> 
 

 
<!-- Include the dojo 1.10.4 CDN --> 
 
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script> 
 

 

 
<main> 
 
    <button id="button" type="button">Click me</button> 
 
</main>

+0

这是正确的感谢家伙 – colapiombo