PhoneGap中文网

标题: ionic打星评价功能 [打印本页]

作者: 跨平台移动开发    时间: 2015-12-10 20:46
标题: ionic打星评价功能
ionic实现打分评价功能



  1. /**
  2. * 评价星星选择控件
  3. */
  4. utilCtrlModule.directive("mystarselect", function () {
  5.     return {
  6.         restrict: 'AE',
  7.         replace: true,
  8.         scope: {
  9.             level: '=',
  10.         },
  11.         template: '<div id="mystarselect"></div>',
  12.         link: function (scope) {
  13.             function star5(starid) {
  14.                 src = "img/home/";
  15.                 this.star_on_left = src + "star.png";
  16.                 this.star_off_left = src + "starBack.png";
  17.                 this.star_on_right = src + "star.png";
  18.                 this.star_off_right = src + "starBack.png";
  19.                 this.id = starid;
  20.                 this.point = 0;

  21.                 this.initial = starInitial;
  22.                 this.redraw = starRedraw;
  23.                 this.attach = starAttach;
  24.                 this.deattach = starDeAttach;
  25.                 this.doall = starDoall;
  26.             }

  27.             function starDoall(point) {
  28.                 this.initial();
  29.                 this.attach();
  30.                 this.redraw(point);
  31.             }

  32.             function starInitial() {
  33.                 var html = "<div style='float:left'>" +
  34.                     "<img id='star" + this.id + "_1' point='1' src='" + this.star_off_right + "'> ";
  35.                 html += "<img id='star" + this.id + "_2' point='2' src='" + this.star_off_right + "'> ";
  36.                 html += "<img id='star" + this.id + "_3' point='3' src='" + this.star_off_right + "'> ";
  37.                 html += "<img id='star" + this.id + "_4' point='4' src='" + this.star_off_right + "'> ";
  38.                 html += "<img id='star" + this.id + "_5' point='5' src='" + this.star_off_right + "'>" + "</div>";
  39.                 //document.write(html);
  40.                 document.getElementById("mystarselect").innerHTML = html;
  41.             }

  42.             function starAttach() {
  43.                 for (var i = 1; i < 6; i++) {
  44.                     document.getElementById("star" + this.id + "_" + i).style.cursor = "pointer";
  45.                     document.getElementById("star" + this.id + "_" + i).onmouseover = moveStarPoint;
  46.                     document.getElementById("star" + this.id + "_" + i).onmouseout = outStarPoint;
  47.                     document.getElementById("star" + this.id + "_" + i).starid = this.id;
  48.                     document.getElementById("star" + this.id + "_" + i).onclick = setStarPoint;
  49.                 }
  50.             }

  51.             function starDeAttach() {
  52.                 for (var i = 1; i < 6; i++) {
  53.                     document.getElementById("star" + this.id + "_" + i).style.cursor = "default";
  54.                     document.getElementById("star" + this.id + "_" + i).onmouseover = null;
  55.                     document.getElementById("star" + this.id + "_" + i).onmouseout = null;
  56.                     document.getElementById("star" + this.id + "_" + i).onclick = null;
  57.                 }
  58.             }

  59.             function starRedraw(point) {
  60.                 for (var i = 1; i < 6; i++) {
  61.                     if (i <= point)
  62.                         if (parseInt(i / 2) * 2 == i)
  63.                             document.getElementById("star" + this.id + "_" + i).src = this.star_on_right;
  64.                         else
  65.                             document.getElementById("star" + this.id + "_" + i).src = this.star_on_left;
  66.                     else if (parseInt(i / 2) * 2 == i)
  67.                         document.getElementById("star" + this.id + "_" + i).src = this.star_off_right;
  68.                     else
  69.                         document.getElementById("star" + this.id + "_" + i).src = this.star_off_left;
  70.                 }
  71.             }

  72.             function moveStarPoint(evt) {
  73.                 var pstar = evt ? evt.target : event.toElement;
  74.                 var point = pstar.getAttribute("point");
  75.                 var starobj = new star5(pstar.starid);
  76.                 starobj.redraw(point);
  77.             }

  78.             function outStarPoint(evt) {
  79.                 var pstar = evt ? evt.target : event.srcElement;
  80.                 var starobj = new star5(pstar.starid);
  81.                 starobj.redraw(0);
  82.             }

  83.             function setStarPoint(evt) {
  84.                 var pstar = evt ? evt.target : event.srcElement;
  85.                 var starobj = new star5(pstar.starid);
  86.                 starobj.deattach();
  87.                 var n = pstar.getAttribute("point");
  88.                 console.log("选择的等级:" + n);
  89.                 scope.level = n;
  90.                 starobj.doall(n);
  91.             }

  92.             var star = new star5("point");
  93.             star.doall(5);
  94.         }
  95.     };
  96. });
复制代码





使用方法:


  1. <p><div style="padding-left: 20px;padding-top: 20px">
  2.     <mystarselect level="evaluateLevel"></mystarselect>
  3. </div></p>
复制代码




evaluateLevel 为定义的选择的星星的个数的变量。
以下是界面效果:




这样ionic打星评价指令就整完成了


本帖来源:

http://www.ionic.ren/2015/12/01/ionic%E5%AE%9E%E7%94%A8%E5%8A%9F%E8%83%BD%E5%9B%9B-%E6%89%93%E6%98%9F%E8%AF%84%E4%BB%B7%E5%8A%9F%E8%83%BD/












作者: 你懂的    时间: 2015-12-13 09:50
还没有用 不知道好不好使  




欢迎光临 PhoneGap中文网 (http://bbs.phonegap100.com/) Powered by Discuz! X3.2