Pager.js + History.js + Require.js - "Unable to get property 'bind' of undefined or null reference"
Pager.js + History.js + Require.js - "Unable to get property 'bind' of undefined or null reference"
我正在使用 Require.js、Pager.js 和 History.js 设置一个新的 Knockout 网络应用程序。我已经设置了初始化 according to the docs,但是当我调用 pager.startHistoryJs()
.
时收到来自 Pager.js 的 "Unable to get property 'bind' of undefined or null reference" 错误
这是我的 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);
});
我错过了什么?我没能找到很多关于此错误的相关信息。
您的 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();
});
您遇到的错误与在未加载适配器的情况下加载 History.js 一致。如果我查看 history.js
中的代码,我发现如果没有可用的适配器,init
函数会静默 returns false
和 History.js 未初始化.
我建议加载 jQuery adapter 并使 history
依赖于它。
我正在使用 Require.js、Pager.js 和 History.js 设置一个新的 Knockout 网络应用程序。我已经设置了初始化 according to the docs,但是当我调用 pager.startHistoryJs()
.
这是我的 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);
});
我错过了什么?我没能找到很多关于此错误的相关信息。
您的 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();
});
您遇到的错误与在未加载适配器的情况下加载 History.js 一致。如果我查看 history.js
中的代码,我发现如果没有可用的适配器,init
函数会静默 returns false
和 History.js 未初始化.
我建议加载 jQuery adapter 并使 history
依赖于它。