我正在使用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);
});
我错过了什么?我还没有找到关于此错误的相关信息。
答案 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();
});