参考错误:menu.show未定义

时间:2014-07-01 07:46:04

标签: jquery

我有一个带按钮的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

1 个答案:

答案 0 :(得分:0)

在args中添加菜单

function($,ko, menu) {   

因为它在父函数范围内不可用,所以它导致 ReferenceError:菜单未定义,因为你在子函数中使用了 menu 而你有把$, ko放在args中,但你忘了在args中传递menu

相关问题