[英]Properly integrating PagerJS with History.js
我正在嘗試使用Knockout,pagerjs和history.js設置SPA。 但是,當我單擊包含data-bind="'page-href': '/somepath'"
,出現JS錯誤:
對象函數History(){[本機代碼]}沒有方法'pushState'
這將向我表明我錯誤地初始化了pagerjs,但是我認為我正確地遵循了該演示。 這是初始化pagerjs的方法:
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嘗試調用的方法。
集成pagerjs和history.js的正確方法是什么?
幸運的是,我找到了這個單元測試代碼 。 這是我學到的:
<base href="..."/>
來指定您的基本URL。 history.js
文件,而應使用jquery.history.js
捆綁包。 pager.start()
,而使用pager.startHistoryJs()
。 這是我更新的初始化代碼:
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();
});
這就是我對AMD進行jquery.history.js
:
define(['jquery'], function () {
// [Original code]
return History;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.