0

我有以下(简化的)java 脚本、html 和包含的 java 脚本(js)文件。我的问题是我收到一个错误,即该方法在 syncData 函数调用中不存在。我知道我可以调用同步函数,因为它在 window.Main 的范围内,但是为什么我不能调用包含在 .js 脚本文件中的 syncData 以及如何调用它?

$(window).load(function () {
   Main.init();
});

window.Main = {
sync: function () {
    alert("sync");
},
init: function () {
    var self = this;
    self.displayDialog();
},

displayDialog: function () {
    $("#dialog-confirm").dialog({
        resizable: false,
        height: 240,
        width: 500,
        modal: true,
        buttons: {
            "Sync Data": function () {
                $(this).dialog("close");
                Main.sync();
                syncData();
            },
            Cancel: function () {
                $(this).dialog("close");
                alert("Cancel");
            }
        }
    });
};

HTML:

<!DOCTYPE html>
<head>
     <title>Pay Items Amounts</title>
    <script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
    <script src="Scripts/jquery-ui-1.10.2.js" type="text/javascript"></script>
    <!--<script src="Scripts/jquery.unobtrusive-ajax.js" type="text/javascript"></script>-->
    <script src="Scripts/jquery.validate.js" type="text/javascript"></script>
    <script src="Scripts/knockout-2.1.0.js" type="text/javascript"></script>
    <script src="Scripts/modernizr-2.5.3.js" type="text/javascript"></script>
    <script src="Scripts/PayItemAmounts.js" type="text/javascript"></script>
    <script src="Scripts/spin.js" type="text/javascript"></script>
    <script src="Scripts/syncData.js" type="text/javascript"></script>
    <link href="Content/jquery-ui.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <header>
    </header>
    <nav>
    </nav>
    <section class="dialog-confirmation">
        <div id="dialog-confirm" title="Sync Data?" style="display:none">
            <p><span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>
            <label id="dialog-message"></label> </p>
        </div>
    </section>
</body>
</html>

JAVASCRIPT syncData.js FILE:
syncData: function () {
    alert("sync");
}
4

2 回答 2

0

你的语法不正确。

function syncData() {
  // whatever
}

我认为您所拥有的应该是语法错误。标签(“syncData:”)没问题,但没用。函数声明缺少名称,因此(我认为)会产生错误。

于 2013-04-09T16:02:37.580 回答
0

您无法调用syncData(),因为您尚未定义名为syncData.

这(因为它不在对象文字定义中):

syncData: function () {
    alert("sync");
}

…是语法错误。

你应该有:

function syncData () {
    alert("sync");
}

或者,如果你真的想要一个函数表达式:

var syncData = function () {
    alert("sync");
}
于 2013-04-09T16:03:02.707 回答