Javascript 将PagerJS与History.js正确集成

Javascript 将PagerJS与History.js正确集成,javascript,knockout.js,single-page-application,history.js,pagerjs,Javascript,Knockout.js,Single Page Application,History.js,Pagerjs,我正在尝试使用Knockout、pagerjs和history.js建立一个水疗中心。但是,当我单击包含数据绑定=“'page-href':'/somepath'”的链接时,我得到一个JS错误: 对象函数History(){[native code]}没有方法“pushState” 这将向我表明我初始化PagerJ的方式不正确,但我认为我正确地遵循了演示。以下是我初始化pagerjs的方式: define(['knockout', 'pager', 'history'], function (k

我正在尝试使用Knockout、pagerjs和history.js建立一个水疗中心。但是,当我单击包含
数据绑定=“'page-href':'/somepath'”
的链接时,我得到一个JS错误:

对象函数History(){[native code]}没有方法“pushState”

这将向我表明我初始化PagerJ的方式不正确,但我认为我正确地遵循了演示。以下是我初始化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的正确方法是什么?

谢天谢地,我发现了。以下是我学到的:

  • 您必须有一个
    来指定您的基本URL
  • 您不应该包含Git中的原始
    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();
    });
    
    下面是我如何修改jquery.history.js的:

    define(['jquery'], function () {
    
        // [Original code]
    
        return History;
    });