2015-10-06 127 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