javascript
  • mithril.js
  • 2016-02-08 76 views 0 likes 
    0

    我正在使用mithril 0.2.2-rc.1。我在routing documentation中看到: 路由是一種允許創建單頁面應用程序(SPA)的系統,即可以從一個頁面到另一個頁面的應用程序而不是導致完全瀏覽器刷新。mithril避免重新加載圖像

    事實上,當我路由到不同的參數只有一部分,我想改變同一頁面刷新預計這樣的:

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

    我可以在該圖像是網絡通信見重新加載(另一個GET請求)。

    有沒有辦法避免這種情況?

    route.js

    m.route.mode = "pathname"; 
    
    m.route(document.getElementById('app'), '/', { 
        '/': main, 
    
        '/modelling/:level': main 
    
    }) 
    

    回答

    2

    這是很難看到的兩段代碼是如何結合在一起,但兩件事情言自明:

    1. 路線(每次改變,即使這種變化的結果相同的路由條目,例如/modelling/x/modelling/y)將導致整個DOM被重新生成。您可以通過在每個路由組件的控制器中調用m.redraw.strategy('diff')來防止此行爲。
    2. 重複請求相同的資源不會導致對服務器的額外調用:每個請求相同JS和CSS的頁面的多頁面站點只會加載這些資源一次,並且會在隨後的請求中觸發瀏覽器緩存。因此反覆詢問相同的圖像資源將不會生成任何新的服務器調用。
    2

    如果檢查the documentation of the m method你會看到config屬性可以讓你保留整個重繪元素。所以這應該適合你:

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