party_bid 第二张卡小结
1、第二张卡涉及到了短信收发,因此,做第二张卡的时候需要在工程中添加sms.js文件,通过sms.js来模拟短信的收发。
2、短信收发是通过活动在报名页面是否点击了“开始”按钮来决定的,因此,需要给“开始”按钮一个状态,因而我将状态存入到了存储器中:
var message = {'actname': $scope.activity, 'activity_status': 'false', 'apply_list': []};
由于“开始”和“结束”按钮之间需要转换,需要在“报名”页面上写入“开始”和“结束”的转换方式,即通过ng-switch来进行状态变换:
<div class="header-right" ng-switch="switch">
<button class="btn-style btn-4" ng-switch-when="true" ng-click="begin()" ng-disabled="start">开始</button>
<a class="btn-style btn-4" ng-switch-when="false" ng-click="end()" >结束</a>
3、点击“活动列表”页面中的活动会跳转到“报名页表”上,并且需要把点击的活动当作是当前激活的活动localStorage.working_activity:
$scope.bm = function (actname) {
$location.path('/creat_active')
localStorage.working_activity = actname;
}
通过存储活动与当前活动比较来实现开始状态,结束状态需要实现弹框形式的跳转,需要通过if和else实现对是否结束进行判定:
if(confirm("确认要结束此次报名吗?")){}
else{}
4、要求是实现页面中只有一个活动的报名开始状态为“true”,我所写的代码形式如下:
function judge_activity_start(){
for(var b in active){
if(active[b].activity_status == 'true'){
return true;
}
}
}
for(var a in active){
if(active[a].actname==localStorage.working_activity) {
if (!judge_activity_start()){
$scope.start = false
}
else {
$scope.start = true}
}
}
5、收发短信的前提是有唯一活动的“开始”按钮已经被点击,因而需要在解析,并存储之前添加判定活动是否开始:
if (active_life[i].activity_status == 'true')
6、由于收发是通过短信的形式实现的,因而需要在sms.js中process_received_message()中,对短信实现解析的工作,解析的代码如下:
if (!message.search(/bm/i)) {
var my_name = message.substr(2).trim()
var my_phone = json_message.messages[0].phone
var my_array = {'name': my_name, 'phone': my_phone}
7、需要对报名是否重复进行判定,通过如下判定实现对报名者回短信的内容,并决定是否进行存取,对于报名重复着,不予于存储,只有初次报名才能够进行存储:
if (json_message.messages[0].phone == active_life[i].apply_list[j].phone)
localStorage.setItem("messages", JSON.stringify(active_life))
8、在使用send_sms()这个方法时,由于没有对其中变量native_access进行定义,因而会出现错误,所以需要进行定义:
var native_access;
$(document).ready(function(){
native_access=new NativeAccess();
})
定义完后需要调用native.js这一文件。