一般我們在上傳檔案都是用 file input 上傳,在選擇檔案後通常只會顯示檔名
如果上傳的是圖檔又同時想要預覽選擇的圖片光用 file input 是無法實現的
以下就介紹一個簡便的方法來實現預覽圖片的效果
首先在 body 中加入 input 及 img 欄位
file input 用來選擇要預覽的圖片,img 用顯示被選的圖片
再來在 controller 中加入下列程式
這樣就可以顯示選擇的圖片了,這裡所使用的是 FileReader API 詳細可參考 MDN
reader.readAsDataURL 會返回以 "data:image/jpeg;base64," 開頭的 base64 字串
將此字串放進 img.src 中就可以顯示圖片了是不是很簡單啊 原始碼 Plunker
執行結果
Jerry 亂記
2016年12月21日 星期三
2016年8月2日 星期二
解決 MySQL CAST INT Return BigINT 的問題
偶然間發現 MySQL 使用 CAST Function 做型別轉換時,若指定輸出為 Integer 則輸出會固定為 BIGINT,如下圖
神了一下發現是 MySQL 的 Bug, http://bugs.mysql.com/bug.php?id=64084
同時也有高手提供了解決辦法,就是自建一個 Function 做轉換

這個 Function 也沒做什麼事,只是把傳進去的 BIGINT 以 INT32 長度回傳而已
所以結果就會變這樣
會發現這個問題是因為原本的資料庫是 MSSQL,在轉換成 MySQL 後將 Data 轉換到 Model 時發生型別錯誤,才發現原來經過 CAST 的 Number 會輸出為 BIGINT
神了一下發現是 MySQL 的 Bug, http://bugs.mysql.com/bug.php?id=64084
同時也有高手提供了解決辦法,就是自建一個 Function 做轉換
這個 Function 也沒做什麼事,只是把傳進去的 BIGINT 以 INT32 長度回傳而已
所以結果就會變這樣
會發現這個問題是因為原本的資料庫是 MSSQL,在轉換成 MySQL 後將 Data 轉換到 Model 時發生型別錯誤,才發現原來經過 CAST 的 Number 會輸出為 BIGINT
2016年7月26日 星期二
AngularJs Select Binding
AngularJs 綁定 Select Element 的方法有二種, 一種為使用 ngOptions 另一種為 ngRepeat
使用 ngOptions 的方法如下
使用 ngOptions 的方法如下

nOptions 會自動產生 <option></option> 並綁定 data.availableOptions 的 item
其中 option.name 為選單的 Text, option.id 為 Value
data.selectedOption 則為 data.availableOptions 的一個 item, 也就是當 selected 事件產生時 data.selectedOption = { id: x, name: yyyy }
使用 ngRepeat 的方法如下

ngRepeat 如同一般的用法在 <option> 中加入 ng-repeat Directive , 當 selected 事件產生時 data.model = option.id 而不是整個 data.availableOptions item
若要設定 selected 可以用 ng-selected directive
<option ng-selected="option.id == data.model">
二種用法的差別如下
ngOptions:
1.option element 自動產生
2.ng-model 為 object
3.有使用 track by 條件要注意 track by 值不能重複
4.指定 ng-model 即可 selected option
ngRepeat:
1.手動填入 ng-repeat option.name, option.id 到 Text 及 Value
2.ng-model 為 value
3.需使用 ng-selected 才能 selected option
官方文件參考 Angular JS API Select
2015年9月1日 星期二
建立 Cordova APP + ionic Framework 開發環境
開發以 Hybrid App 也一陣子了,一開始自然免不了花一陣子時間摸索
在開發過程中自然也碰到不少問題,以後有時間再慢慢把碰到的問題記錄下來
廢話就不多說了回歸正題
在開發過程中自然也碰到不少問題,以後有時間再慢慢把碰到的問題記錄下來
廢話就不多說了回歸正題
開發 Cordova App 所需的環境如下
1、nodejs
首先安裝 nodejs ,可以到 nodejs 官網下載安裝包安裝,安裝包也包含了 Git 套件 App 開發過程中會需要外掛一些 plugin ,這些 plugin 都是從 GitHub 下載安裝的。
首先安裝 nodejs ,可以到 nodejs 官網下載安裝包安裝,安裝包也包含了 Git 套件 App 開發過程中會需要外掛一些 plugin ,這些 plugin 都是從 GitHub 下載安裝的。
開發所需的工具準備好後還要為 windows 設定預設路徑
1、"控制台"=> "系統" => "進階系統設定" => "進階" => "環境變數" => 新增使用者變數
ANT_HOME: apache-ant 目錄
ADT_HOME: android sdk 目錄
2、修改"系統變數" Path 內容,加入 ;%ANT_HOME%\bin;%ADT_HOME%\tools;%ADT_HOME%\platform-tools;%JAVA_HOME%\bin
以上步驟都做完了就可以開發 接下來要安裝 Cordova, 打開 command mode, 輸入以下指令
C:\npm install -g cordovaCordova 安裝完成後接著安裝 ionic , 輸入 npm install -g ionic ,
C:\npm install -g ionic安裝完成就大功告成了接著就可以來開發 app 嘍,建立 ionic app 超簡單,只要輸入以下指令
C:\ionic start appname就能建立 app 專案(appname 為 app 專案名稱,請自行命名)
專案建立完成後進入專案目錄,輸入以下指令就可以直接開啟瀏覽器進行預覽及除錯
若要在模擬器或手機上預覽則要替專案加上執行平臺,在專案目錄下輸入
android 平台加入後可以先 build app 輸入
顯示 BUILD SUCCESSFUL 表示 build app 完成,打包好的 apk 檔會存放在 C:\appname\platforms\android\build\outputs\apk\android-debug.apk 這裡,這個 apk 檔可以直接放到手機安裝執行,另外一些偵錯的方法就以後再介紹囉~
C:\appname\ionic serve
若要在模擬器或手機上預覽則要替專案加上執行平臺,在專案目錄下輸入
C:\appname\cordova platform add android
android 平台加入後可以先 build app 輸入
C:\appname\ionic build android
2015年8月11日 星期二
解決 cordova plugin 無法安裝的問題
最近幾天要為開發的 app 安裝 plugin,出現 "Error: EXDEV, cross-device link not permitted" 的錯誤訊息
大神了一下原來是升級到 cordova 5.0.0 到 5.1.1 版本,在 windwos 系統會出現此問題
原文在這 Plugin install via git url error "cross-device link not permitted"
解決方法在這裡 apache / cordova-lib GitHub ,文中提到要修改 plugins.js 這個檔案,這個檔案的位置藏得蠻深的有點不好找 = =
C:\Users\你的帳號\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\src\plugman\util\plugins.js
開啟檔案後將 GitHub 中標註紅色的部份刪除,綠色的部份加到檔案中存檔,之後就可以正常安裝 plugin 了
大神了一下原來是升級到 cordova 5.0.0 到 5.1.1 版本,在 windwos 系統會出現此問題
原文在這 Plugin install via git url error "cross-device link not permitted"
解決方法在這裡 apache / cordova-lib GitHub ,文中提到要修改 plugins.js 這個檔案,這個檔案的位置藏得蠻深的有點不好找 = =
C:\Users\你的帳號\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\src\plugman\util\plugins.js
開啟檔案後將 GitHub 中標註紅色的部份刪除,綠色的部份加到檔案中存檔,之後就可以正常安裝 plugin 了
幾句話簡單解釋 AngularJs Service, Provider, Factory
1、Service, Factory, Provider 都是 Signlton 在 angular 初始化時就會將所有Module 載入, 在之後的應用中無論注入幾次都是叫用同一個實例.
2、Service 沒有 return 區塊, 通常以 this.object = {}的方式設定物件, 物件可以是字串、Array、function, angular 注入會以 new class() 方式回傳物件
3、Factory 只會取得 return 區塊的本身, return 區塊以外可另外定義物件但不會被外部取得
4、Provider 以 $.get 回傳物件, 在 provider 裡可以另外設置 function 用來傳入參數, 通常會配合 Service 或 Factory, 在 $.get 中回傳 Service 或 Factory 物件
訂閱:
文章 (Atom)