WinJS.Namespace定义的方法无法访问

时间:2012-10-10 06:27:24

标签: javascript windows-8 winjs

我有一个导航应用。在页面控件中存在相应的js文件。我想访问项目js文件夹中的外部js文件。我在

中指定了

commonFunctions.js

WinJS.Namespace.define(

'commonFunctions', {

        authenticate: authenticate

    });

现在访问PageControl的js(page2.js)文件中的方法

commonFunctions.authenticate();

它出错了:

0x800a1391 - JavaScript运行时错误:'commonFunctions'未定义

如果存在此异常的处理程序,则可以安全地继续该程序。

这是正确的方法吗?或者我错过了什么?

1 个答案:

答案 0 :(得分:1)

我相信你遇到的问题是你没有在你正在加载的页面中引用你的脚本文件,或者你没有在函数中包装你的commonFunctions对象。

我试过这个: 的script.js

(function () {
    WinJS.Namespace.define("CommonObject", {
        auth: function () {
            return true;
        }
    });
}());

default.js

    app.addEventListener("activated", function (args) {
        if (args.detail.kind === activation.ActivationKind.launch) {
            if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
                // TODO: This application has been newly launched. Initialize
                // your application here.
            } else {
                // TODO: This application has been reactivated from suspension.
                // Restore application state here.
            }

            if (app.sessionState.history) {
                nav.history = app.sessionState.history;
            }
            args.setPromise(WinJS.UI.processAll().then(function () {
                var test = CommonObject.auth(); // Comes out true and no exceptions
                if (nav.location) {
                    nav.history.current.initialPlaceholder = true;
                    return nav.navigate(nav.location, nav.state);
                } else {
                    return nav.navigate(Application.navigator.home);
                }
            }));
        }
    });

default.html中

<script src="/js/script.js"></script>