Pager.js + History.js + Require.js - “无法获取未定义或空引用的属性'绑定'”

时间:2015-01-09 15:13:10

标签: jquery knockout.js requirejs history.js pagerjs

我正在使用Require.js,Pager.js和History.js设置一个新的Knockout Web应用程序。我已经设置了初始化according to the docs,但我收到的是“无法获取属性' bind'未定义或空引用"调用pager.startHistoryJs()时,Pager.js出错。

这是我的Require.js配置:

require.config({
    paths: {
        'knockout': '/scripts/lib/knockout-3.2.0',
        'jquery': '/scripts/lib/jquery-1.11.2.min',
        'text': '/scripts/lib/text',
        'pager': '/scripts/lib/pager.min',
        'history': '/scripts/lib/history'
    },
    shim: {
        'pager': ['jquery', 'knockout'],
        'history': ['jquery', 'pager', 'knockout'],
    },
    waitSeconds: 0
});

这是我的Require.js初始化脚本:

require(['knockout', 'viewmodel/appViewModel', 'jquery', 'pager', 'history', 'lib/domReady!'], function (ko, appViewModel, $, pager) {
    pager.useHTML5history = true;
    pager.Href5.history = History;
    var viewModel = new appViewModel();
    pager.extendWithPage(viewModel);
    ko.applyBindings(viewModel);
    pager.startHistoryJs();
});
抛出错误的

Here's the line in Pager.js(第1497行):

// Bind to StateChange Event
pager.Href5.history.Adapter.bind(window, 'statechange', function () {
    var relativeUrl = pager.Href5.history.getState().url.replace(pager.Href5.history.getBaseUrl(), '');
    goTo(relativeUrl);
});

我错过了什么?我还没有找到关于此错误的相关信息。

2 个答案:

答案 0 :(得分:3)

您获得的错误与加载History.js而没有加载适配器一致。如果我查看history.js中的代码,我会看到如果没有可用的适配器,init函数会以静默方式返回false并且不会初始化History.js。

我建议加载jQuery adapter并使history依赖它。

答案 1 :(得分:0)

您的require函数中似乎缺少History(可能还有lib/domReady!个参数)。

require(['knockout', 'viewmodel/appViewModel', 'jquery', 'pager', 'history', 'lib/domReady!'], function (ko, appViewModel, $, pager, History, domReady) {
    pager.useHTML5history = true;
    pager.Href5.history = History;
    var viewModel = new appViewModel();
    pager.extendWithPage(viewModel);
    ko.applyBindings(viewModel);
    pager.startHistoryJs();
});