首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PagerJS与History.js的恰当集成

PagerJS与History.js的恰当集成
EN

Stack Overflow用户
提问于 2013-10-02 16:03:42
回答 1查看 1K关注 0票数 2

我正在尝试使用Knockout、pagerjs和history.js来设置SPA。但是,当我单击包含data-bind="'page-href': '/somepath'"的链接时,会得到一个JS错误:

对象函数History() {本机代码}没有方法'pushState‘

这将向我表明我正在错误地初始化pagerjs,但我认为我的演示是正确的。下面是我如何初始化页面‘s:

代码语言:javascript
复制
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的底部:

代码语言:javascript
复制
// [original history.js code]

define(function() { return History; });

但是,我注意到History没有一个pushState方法,这就是pagerjs试图调用的方法。

集成页面is和history.js的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-02 17:19:17

幸运的是,我找到了这个单元测试代码。以下是我学到的:

  1. 您必须有一个<base href="..."/>来指定您的基本网址。
  2. 您不应该包含Git中的原始history.js文件,而是使用jquery.history.js包。
  3. 不要使用pager.start(),而是使用pager.startHistoryJs()

下面是我更新的init代码:

代码语言:javascript
复制
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

代码语言:javascript
复制
define(['jquery'], function () {

    // [Original code]

    return History;
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19141447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档