我正在尝试使用Knockout、pagerjs和history.js来设置SPA。但是,当我单击包含data-bind="'page-href': '/somepath'"的链接时,会得到一个JS错误:
对象函数History() {本机代码}没有方法'pushState‘
这将向我表明我正在错误地初始化pagerjs,但我认为我的演示是正确的。下面是我如何初始化页面‘s:
define(['knockout', 'pager', 'history'], function (ko, pager, history) {
// [define my view model]
pager.useHTML5history = true;
pager.Href5.history = history;
pager.extendWithPage(viewModel);
// [apply bindings]
pager.start();
});为了使history.js能够作为AMD模块加载,我将其添加到history.js的底部:
// [original history.js code]
define(function() { return History; });但是,我注意到History没有一个pushState方法,这就是pagerjs试图调用的方法。
集成页面is和history.js的正确方法是什么?
发布于 2013-10-02 17:19:17
幸运的是,我找到了这个单元测试代码。以下是我学到的:
<base href="..."/>来指定您的基本网址。history.js文件,而是使用jquery.history.js包。pager.start(),而是使用pager.startHistoryJs()。下面是我更新的init代码:
define(['knockout', 'pager', 'history'], function (ko, pager, history) {
var viewModel = /* [Create my view model] */;
pager.useHTML5history = true;
pager.Href5.history = history;
pager.extendWithPage(viewModel);
ko.applyBindings(viewModel);
pager.startHistoryJs();
});下面是我是如何实现jquery.history.js的
define(['jquery'], function () {
// [Original code]
return History;
});https://stackoverflow.com/questions/19141447
复制相似问题