首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >第一次访问后Pagerjs不更新withOnShow

第一次访问后Pagerjs不更新withOnShow
EN

Stack Overflow用户
提问于 2013-08-24 13:38:31
回答 1查看 791关注 0票数 3

我使用Pager.js和withOnShow动态地用通配符获取正确的数据。它在您第一次访问页面时工作,但是如果您导航到一个新id,则返回正确的viewModel,但绑定不会更新。

Html:

代码语言:javascript
复制
<div data-bind="page: {id: 'start'}">
    <a href=""  data-bind="page-href: '/11'">id 11</a>
    <a href=""  data-bind="page-href: '/12'">id 12</a>
</div>
<div data-bind="page: {id: '?', withOnShow: showView}">
    <h1 data-bind="text:id"></h1>
    <a href=""  data-bind="page-href: '/11'">id 11</a>
    <a href=""  data-bind="page-href: '/12'">id 12</a>
</div>

JS

代码语言:javascript
复制
vm = ko.mapping.fromJS({test: 1});
vm.showView = function(callback, page) {
    console.log(page.currentId);
    vm = ko.mapping.fromJS({id: page.currentId});
    callback(vm);
};
pager.useHTML5history = true;
pager.Href5.history = History;
pager.extendWithPage(vm);
ko.applyBindings(vm);
pager.startHistoryJs();

jsFiddle:http://jsfiddle.net/xU4Uu/

尝试导航到其中一个链接,然后使用新链接导航到另一个id。控制台日志显示返回的正确id,但h1未更新。

是我使用这个错误了,还是pager.js中的一个bug?我正在做一个项目,我真的需要让它发挥作用。有人怎么解决这个问题的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-24 18:59:36

每次调用.showView时,代码都会重新创建模型。不应重新创建视图模型,而应只更新其属性。

更改:

代码语言:javascript
复制
vm = ko.mapping.fromJS({id: page.currentId});

至:

代码语言:javascript
复制
ko.mapping.fromJS({id: page.currentId}, vm);

使用VM作为第二个参数的ko.mapping.fromJS将用新值更新VM成员(分别使用第一个参数传递)。

修正小提琴:http://jsfiddle.net/xU4Uu/1/

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

https://stackoverflow.com/questions/18419183

复制
相关文章

相似问题

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