2017-04-25 129 views
-2

我的項目中有兩個JavaScript文件。一個(index.js)聲明Material對象,另一個(nav.js)將方法添加到Materialsystemjs從另一個文件變量

我使用SystemJS將這兩個文件導入到我的HTML頁面。

當頁面加載時,我從第二個文件收到錯誤,說明Material未定義。

如果我第二個爲使之前加載的第一個文件:

<script src="./jspm_packages/system.js"></script> 
<script src="./config.js"></script> 
<script> 
    System.import("./scripts/index.js"); 
    System.import("./scripts/nav.js"); 
</script> 

不應Material對象已經被定義?


這裏是我的兩個文件:

index.js:

var $ = require('jquery'); 

// Define Material 
var Material = { 
    components: {}, 
    reload: function() { 
    console.log('reloading...'); 
    }, 
    dev: true 
}; 

和nav.js:

var $ = require('jquery'); 

Material.initHeader = function() { 
    console.log('initializing header...'); 
}; 

這裏是我得到

Uncaught ReferenceError: Material is not defined at nav.js:3

錯誤任何幫助?

回答

1

模塊是獨立的。它們在加載時不會修改全局名稱空間。如果你想從另一個模塊的東西,你必須導入它:

var $ = require('jquery'); 
var ix = require('./index.js'); 

ix.Material.initHeader = function() { 
    console.log('initializing header...'); 
}; 
+0

謝謝。我一整天都在搞這個,接近這個,但我只是在做'var Material = require('./ index.js'); Material.initHeader ...' – krummens

相關問題