我有一个带按钮的html文件。我的html文件加载main.js如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My Account</title>
<!-- RequireJS bootstrap file -->
<script data-main="lib/main" src="lib/require.js"></script>
</head>
<body>
<p>First name: <input data-bind="value:firstName"/></p>
<p>Last name: <input data-bind="value:lastName"/></p>
<p>Full name: <strong data-bind="text: fullName"></strong></p>
<button data-bind="click: capitalizeLastName">Go caps</button>
</body>
</html>
Main.js加载另一个名为menu.js的应用程序js,它有一个名为show的函数。 点击按钮,我将调用此功能显示如下:
Main.js定义为:
requirejs.config({
//Path mappings for the logical module names
paths: {
'knockout': 'jslibs/knockout-2.3.0',
'jquery': 'jslibs/jquery-1.11.0',
'menu':'jslibs/menu'
},
// Shim configurations for modules that do not expose AMD
shim: {
'jquery': {
exports: ['jQuery', '$']
}
},
});
require(['jquery','knockout','menu'],
function($,ko) {
function AppViewModel() {
var self = this;
self.firstName = ko.observable("");
self.lastName = ko.observable("");
self.fullName = ko.computed(function (){
return this.firstName() +" "+this.lastName();
},this);
this.capitalizeLastName = function() {
menu.show();
};
};
vm= new AppViewModel();
$(document).ready(function() {
ko.applyBindings(vm);
});});
menu.js定义为:
define(['jquery','knockout'],function($,ko){
var add = {
show: function(id) {
alert('inside show');
}
};
return add;
});
点击按钮,我收到错误:
ReferenceError:菜单未定义
menu.show();
任何指针?我检查了路径,所有路径都有效。
由于 TANU
答案 0 :(得分:0)
在args中添加菜单:
function($,ko, menu) {
因为它在父函数范围内不可用,所以它导致 ReferenceError:菜单未定义,因为你在子函数中使用了 menu 而你有把$, ko
放在args中,但你忘了在args中传递menu
。