Party_bid第三张卡片活动竞价
第三张卡片与第二张卡片非常相似,也是需要短信处理的函数和竞价者信息的列表显示和刷新功能,唯一需要注意的就是与查询对象的时候需要判断要查询的目标是否为空。下面总结一下第三张卡片的各种要点。
1.竞价列表页面的竞价名生成
在点击报名列表的”结束“按钮后会自动跳转到竞价列表,点击列表有上方的开始按钮,自动生成竞价活动”竞价1“,点击结束后在点击开始生成”竞价2“,按此顺序依次生成活动的竞价名。在controller里面的逻辑调用
//controller $scope.start_bidding=function(){ Bidding_list.Create_bidding($routeParams.action);//竞价名数组 };
在model里面的具体实现
var Bidding=SMS.get_bid_information(); //获取竞价数组信息 var Bidding=JSON.parse(localStorage['Bid_smsinformation'] || '[]'); var list = _.findWhere(Bidding,{'activity':activity});//查询竞价所在的活动名 var biding_name = "竞价" + (list.bidding.length + 1); //生成竞价名 list.bidding.unshift({bid_name:biding_name); localStorage['Bid_smsinformation'] = JSON.stringify(Bidding);
2.竞价活动的收发短信
在竞价列表点击开始之后进入竞价报名页面,这时候可以在控制台模拟发短信功能测试短信发送和接收是否成功,此功能与活动报名大同小异,不过竞价成功的条件发生了小小的变化;(1)竞价格式变为:JJ+竞价价格;(2)参与竞价必须是之前在活动中已经报名的,能查询到相应的号码;(3)竞价时活动竞价必须是正在进行的状态。js实现代码如下:
判断竞价信息是否为JJ开头的:
var Update_message = message.message.replace(/\s/g, "");
message.message = Update_message.substr(2, 6);
return (Update_message.search(/JJ/i) == 0); //判断竞价信息格式
判断是否报名:
var lists =_.findWhere(BM_inforamtion,{'activity':list.activity}); return _.findWhere(lists.information,{'phone':json_message.messages[0].phone})); //判断报名信息中是否存在竞价号码
3.竞价信息的存储结构
在竞价成功之后,竞价成功者的信息就会被存储到相应的活动名对应的竞价名对象数组中,这样就方便查询和读取显示。存储结构如下:
js实现代码如下:
var list= _.findWhere(Bidding,{'activity':this.activity});//进行的竞价活动对应的对象
list.bidding[0].information.push({price:this.information.message,phone:this.information.phone,name:actions_informations.message});//push到数组中
localStorage['Bid_smsinformation'] = JSON.stringify(Bidding);
return JSON.parse(localStorage['Bid_smsinformation'] || '[]');
需要注意的是,在竞价的时候获取的是竞价价格,但是需要显示竞价人的名字,这就需要使用电话号码查询报名信息中对应的人物姓名了。
4.竞价列表进行中的竞价背景变黄
竞价名背景变黄跟活动列表中列表名变黄差别不大,只需要给正在进行中的竞价定义一个状态属性,根据状态属性来判断背景颜色就可以了。
5.按钮变灰色控制
按钮变灰色是通过ng-disabled来控制的,在活动和竞价正在进行时需要控制活动列表页面的创建活动按钮不可用,竞价进行时竞价列表开始不可用,报名页面点击结束后结束按钮变灰色,竞价结束按钮也是相同的控制。但是这里有一个问题就是在竞价报名页面点击结束后需要刷新一次按钮才会便色。在这里需要使用到一个刷新的函数功能。其余的都是可以通过读取状态属性来调整。
6.竞价信息的显示和刷新
我们在竞价报名页面中报名并且成功之后就需要将竞价成功者的信息即时的显示到页面上,所以就需要读取localstroage数组里面的对象和刷新函数了。
页面的数据绑定代码:
<li class=" clearfix btn-default" ng-repeat="messages in Messages"> //遍历信息数组
<h3 style="height: 30px">姓名: {{messages.name}}</h3>
<p>电话号码:{{messages.phone}}</p>
</li>
controller里面的调用代码:
//controller $scope.refresh = function () { ;//需要返回竞价者的号码和对应的报名信息的名字 $scope.Message=bid_information($routeParams.ongoing_action,$routeParams.bid_name); $scope.nums=$scope.Messages.length; };//需要返回竞价着的号码和对应的报名信息中的名字
model里面的读取代码:
function bid_information(activity,bid_name) { //查询对应活动和竞价名 var bid_information = SMS.get_bid_information(); var list = _.findWhere(bid_information, {'activity': activity}); var lists = _.findWhere(list.bidding, {'bid_name': bid_name}); return lists.information; //返回竞价者的信息 };
以上就是Patry_bid第三张卡片的知识和要点总结了。