在做第二張卡的時候,需要用到接收短信的機制,而生成工程時候,沒有生成接收短信的檔案Sms.js,是以在做短信的處理之前先引入了sms.js的檔案到自己的工程裡。
1 模拟系統回複短信
在之後要将自己的工程打包裝到模拟器上測試的時候,要在自己的工程裡引入cordova的插件,目前在頁面上測試,我用conslose.log("")來模拟系統發短信
2 頁面顯示報名人的姓名和聯系電話,姓名靠左,電話靠右
之前我做的時候姓名和電話不在一行上,一個靠左顯示一個靠右顯示,但是顯示的時候需要去掉分行,在yeoman下做的時候,修改一下haml檔案的清單顯示。
執行個體:
%li(ng-repeat="current in currents")
.header-left
{{current.name}}
.header-right
{{current.phone}}
清單内左邊顯示姓名,右邊顯示電話,分行就沒有了。
3 提取BM并判斷是否要儲存短信
先将短信中的前兩個字元提取出來,并将其轉換為大寫的字母,如果是BM才對該短信進行處理,否則不接收
var get_bm=json_message.messages[0].message.substr(0, 2).toUpperCase();
toUpperCase(),可以實作将字母轉換為大寫
4 報名短信的存儲
之前在做party_bid的時候,在存儲報名短信的時候在Sms.js裡面定義了一個數組和數組的屬性,在yeoman工程下做的時候,建立了一個對短信處理的model,在model裡實作對短信的存取和處理,
執行個體:
儲存報名短信
function Message(activity, name, phone) {
this.activity = activity;
this.name = name;
this.phone = phone;
}
Message.save_message = function (json_message) {
var messages = JSON.parse(localStorage.getItem('messages')) || [];
var message = new Message(localStorage.starting_activity, Message.received_name(json_message), Message.received_phone(json_message));
messages.push(message);
localStorage.setItem('messages', JSON.stringify(messages));
}
5 正在報名的活動對應的底色為黃色
在index.CSS的檔案中寫了一個樣式,當傳回值為start的時候即為黃色
.start{
background: yellow !important;
}
在haml裡給清單設定一個class
%li(class="{{activity_yellow(activity.activity)}}")
在js裡面寫對應的控制
$scope.activity_yellow = function (activity) {
if (Activity.background_yellow(activity)) {
return "start";
}
}
Activity.background_yellow(activity)是從本地資料庫中找到正在進行報名的活動并傳回。
6 點選結束彈出二次提醒對話框
利用confrim(),