AngularJS实现星星等级评分功能_AngularJS

星期六加班,教育后台也要有星级评分等级的需求,醉了……基本知道些怎么做,网上也随便找了找,没什么合意的,毕竟需求不同,也不能完全一样不是。学习之,改之╮(╯▽╰)╭

Directive 

angular.module('XXX').directive('stars', stars);

  function stars() {
    var directive = {
      restrict: 'AE',
      template: '<ul class="rating" ng-mouseleave="leave()">' +
        '<li ng-repeat="star in stars" ng-class="star" ng-click="click($index + 1)" ng-mouseover="over($index + 1)">' +
        '<i class="glyphicon glyphicon-star stars"></i>' +
        '</li>' +
        '</ul>',
      scope: {
        ratingValue: '=',
        hoverValue: '=',
        max: '=',
        onHover: '=',
        onLeave: '='
      },
      controller: startsController,

      link: function(scope, elem, attrs) {
        elem.css("display", "block");
        elem.css("text-align", "center");
        var updateStars = function() {
          scope.stars = [];
          for (var i = 0; i < scope.max; i++) {
            scope.stars.push({
              filled: i < scope.ratingValue
            });
          }
        };
        updateStars();

        var updateStarsHover = function() {
          scope.stars = [];
          for (var i = 0; i < scope.max; i++) {
            scope.stars.push({
              filled: i < scope.hoverValue
            });
          }
        };
        updateStarsHover();

        scope.$watch('ratingValue', function(oldVal, newVal) {
          if (newVal) {
            updateStars();
          }
        });
        scope.$watch('hoverValue', function(oldVal, newVal) {
          if (newVal) {
            updateStarsHover();
          }
        });
      }

    };

    return directive;

    /** @ngInject */
    function startsController($scope) {
      // var vm = this;
      $scope.click = function(val) {
        $scope.ratingValue = val;
      };
      $scope.over = function(val) {
        $scope.hoverValue = val;
      };
      $scope.leave = function() {
        $scope.onLeave();
      }

    }
  }

CSS 

.rating {

  color: #a9a9a9;
  margin: 0;
  padding: 0;
  text-align: center;

}
ul.rating {
  display: inline-block;

}
.rating li {
  list-style-type: none;
  display: inline-block;
  padding: 1px;
  text-align: center;
  font-weight: bold;
  cursor: pointer;
}

.rating .filled {
  color: #f00;
}
.rating .stars{

  font-size: 20px;

  margin-right: 5px;

}

Controller 

    //星星等级评分
    $scope.max = 6;
    $scope.ratingVal = 6;
    $scope.hoverVal = 6;//我这需求是默认六个星全满(淡腾,反正也招不出神龙.因为还差一个.)一般的话,ratingVal和hoverVal都写0就可以了。
    $scope.onHover = function(val) {
      $scope.hoverVal = val;
    };
    $scope.onLeave = function() {
      $scope.hoverVal = $scope.ratingVal;
    }
    $scope.onChange = function(val) {
      $scope.ratingVal = val;
    }

HTML

<stars rating-value="ratingVal" hover-value="hoverVal" max="max" on-hover="onHover" on-leave="onLeave"></stars>
ratingVal:{{ratingVal}};<br/>
hoverVal:{{hoverVal}}

说几句, 星星那东西,可以直接输入法敲出来,也可以用unicode搞出来,字体文件什么的都行,你要硬用图片的话……把ngClass换成ngSrc也可以试试,代码改改也行,精灵图改改background-position也凑合过,╮(╯▽╰)╭ 想了一下,比较累,祝你成功。

如果是那种商城网站只是要看评价等级的话,复用代码也可以,加个readonly属性。 

directive:
  scope: {
    readonly: '@'
  }
   function startsController($scope) {
      // var vm = this;
      $scope.click = function(val) {
       if ($scope.readonly) {
         return;
        }
        $scope.ratingValue = val;
      };
      $scope.over = function(val) {
       if ($scope.readonly) {
         return;
        }
        $scope.hoverValue = val;
      };

   }

controller:
  $scope.readonly = false;

html:
  readonly={{readonly}}.

写到这,突然意识到今后一定会改需求,加功能(已然习惯)。我还是默默地加上readonly吧……

指令这玩意,深了很绕,我也弄不熟,每次写还得翻翻以前写的代码,毕竟渣渣。每次不要复用的代码,我都懒得用指令,毕竟菜鸟。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索js星星等级评分
, angularjs等级评分
angularjs星星评分
angularjs 星星评分、js实现星星评分、jquery实现星星评分、angularjs 星级评分、angularjs 评分,以便于您获取更多的相关知识。

时间: 2024-08-25 06:42:22

AngularJS实现星星等级评分功能_AngularJS的相关文章

AngularJs页面筛选标签小功能_AngularJS

AngularJS 简介 AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 HTML 页面. AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML. AngularJS 是一个 JavaScript 框架 AngularJS 是一个 JavaScript 框架.它是一个以 JavaScript 编写的库. AngularJS 是以一个 JavaScript 文件形式发布的,可通过 script 标签添加到网页中:

基于AngularJS+HTML+Groovy实现登录功能_AngularJS

AngularJS是开发基于浏览器的响应式RWD应用程序的一个前端MVC框架,由谷歌最初开发的 开源项目,干净的架构吸引了大量粉丝,适合建立CRUD类型的业务应用程序,并不适合开发游戏等应用, 使用声明性编程的用户界面和命令式编程的逻辑, 支持现代桌面和移动浏览器 Internet Explorer版本8.0及以上. AngularJS是一款客户端MVC的javascript框架,而客户端MVC代表未来架构(为什么要使用MVC+REST+CQRS 架构),如果你有Struts或SpringMVC

Angularjs material 实现搜索框功能_AngularJS

angular-material 是 AngularJS 的一个子项目,用来提供实现了 Material Design 风格的组件. Material 提供了大量的android 风格的UI组件,使用 angularjs + Material 可以很容易开发出风格接近原生 Android 5.x 的web界面.但在实际使用的过程中并不总是能满足我们的需求.开发一个组件就成了我们必须学习的内容. 下面是一个组件的实现: //前面省略若干代码 directive('mdSearchInput',[f

利用Angularjs和bootstrap实现购物车功能_AngularJS

先来看看效果图: 购物车 一.代码 如果看了这个效果有兴趣想知道怎么做出来的话,那就继续往下看吧.话不多少,直接上代码. html代码: <!DOCTYPE html> <html lang="en" ng-app="cart"> <head> <meta charset="UTF-8"> <title>购物车</title> <link rel="style

AngularJS实现全选反选功能_AngularJS

AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了.所以我做了一些工作(你也可以觉得是小花招)来让浏览器做我想要的事. 这里用到AngularJS四大特性之二----双向数据绑定 注意:没写一行DOM代码!这就是ng的优点,bootstrap.css为了布局,JS代码也只是简单创建ng模块和ng控制器 效果: <!DOCTYPE html> <html lang="en&quo

jquery实现类似淘宝星星评分功能实例_jquery

本文实例讲述了jquery实现类似淘宝星星评分功能的方法,分享给大家供大家参考之用.具体方法如下: html部分代码如下: <body> <div id="div"> <ul> <li>☆</li> <li>☆</li> <li>☆</li> <li>☆</li> <li>☆</li> </ul> </div>

JS实现星星评分功能实例代码(两种方法)_javascript技巧

一.方法1 1.用到图片 2.结构和样式 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> ul { padding-left: 0; overflow: hidden; } ul li { float: left; list-style: no

iOS评分(评价)星星图打分功能_IOS

 下载地址:https://github.com/littleSunZheng/StarGradeView 起因:项目中往往涉及到用户的评分反馈,在我的"E中医"项目中,涉及到几处.对此我参考了美团和滴滴的评分图. 评分视图分为展示和评分两种: (1)多数情况下"评分功能"是要简介易用的.那种 星星准确显示百分比(分数)的功能反而不好用,这种多数用在显示评分上,不需要用户去点击,因为用户想评价"9.8分",手指头是不能准确点击的.但是显示的时候你

js实现的星星评分功能函数_javascript技巧

本文实例讲述了js实现的星星评分功能函数.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head&