秘银避免重新加载图像

时间:2016-02-08 14:46:00

标签: javascript mithril.js

我正在使用秘银0.2.2-rc.1。我在routing documentation看到了: 路由是一个允许创建单页面应用程序(SPA)的系统,即可以从一个页面转到另一个页面而不会导致完整浏览器刷新的应用程序。

事实上,当我使用不同的参数路由到同一页面时,我想要更改的部分是刷新期望

var datePicker = UIDatePicker()
datePicker.datePickerMode = .Time

我可以在网络通信中看到重新加载图像(另一个GET请求)。

有没有办法避免这种情况?

route.js

m("img[src='assets/images/logo.png'][alt=''][width='100']")

2 个答案:

答案 0 :(得分:2)

很难看出这两段代码是如何组合在一起的,但有两件事表明:

  1. 路由的每次更改(即使该更改导致相同的路由条目,例如/modelling/x/modelling/y)将导致重新生成整个DOM。您可以通过在每个路由组件的控制器中调用m.redraw.strategy( 'diff' )来阻止此行为。
  2. 反复请求相同的资源不会导致对服务器的额外调用:一个多页面站点,每个页面请求相同的JS和CSS只会加载一次这些资源,并且会在后续请求中点击浏览器缓存。因此,反复询问相同的图像资源将不会生成对服务器的任何新调用。

答案 1 :(得分:2)

如果您选中the documentation of the m method,您会看到config属性可让您在重绘时保留元素。所以这对你有用:

m('img', {config: function persist(el, isInit, context)}) {
    context.retain = true;
}