天天看點

knockout+echarts實作圖表展示

  knockout, require, director, echarts, jquery。簡單的入一下門,網上的資料很多,最直接就是進官網校習。

knockout+echarts實作圖表展示

  require.config.js中可以配置我們的自定義子產品的加載。

  目前項目目錄結構如下。

knockout+echarts實作圖表展示

  沒有配置路由的index.html如下。

  這樣,所有的子產品都是可以被找到被加載的。

  現在改變一些目錄結構,在根目錄下建立index檔案夾,将index.html放入該檔案夾下。并修改index.html中script的引用路徑,如下。

  目錄結構如下

knockout+echarts實作圖表展示

  重新用浏覽器打開index/index.html,然後會發現浏覽器控制台報錯: 項目根目錄/index/jquery/jquery-1.11.2.js net::ERR_FILE_NOT_FOUND, 當然require.config.js中加載的其他的子產品也找不到了。是以說,require.config.js中的baseUrl: "."表示的是目前根目錄為index.html所在的目錄。如果現在的目錄結構想要正确的加載子產品,那麼修改成baseUrl:"../"就可以了。

  index.js内容如下。

  index.js中,定義了addRouter函數,這個函數主要是用來添加路由,首先判斷有沒有被添加過,然後為每一個路由指定一個回調函數,回調函數會調用我們的initPage()方法,通過require加載我們定義好的子產品。

  我們的pages目錄下有3個定義好的子產品,如下。

knockout+echarts實作圖表展示

  在index.html添加url路徑資訊,如下。

  index.js執行之後會将路由注冊到director中的Router中,使用者點選連結,比如<a href='#/pie/pie'>,就會觸發 /pie/pie 這個路由對應的回調方法,回調方法中會執行initPage('pages' + truePath, params), truePath="/pie/pie",接着require就會完成加載pages/pie/pie.js(自定義子產品),接下來看看我們自定子產品的内容。

  pages/pie/pie.js内容如下。

   自定義子產品中,require會加載jquery(調用ajax加載資料),knockout(資料綁定),text(需要渲染的html頁面),echarts(圖表展示),最後的return傳回的對象會在index.js中initPage()方法通過require被加載并調用。

  在用jquery的ajax請求本地資源時,可能會出現 Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource。

  解決方法:給浏覽器傳入啟動參數(allow-file-access-from-files),允許跨域通路。Windows下,運作(CMD+R)或建立快捷方式:"C:/Program Files (x86)/Google/Chrome/Application/chrome.exe" --allow-file-access-from-files

  

knockout+echarts實作圖表展示

繼續閱讀