博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Angular directive实践($compile , ngModel ...)
阅读量:5942 次
发布时间:2019-06-19

本文共 1766 字,大约阅读时间需要 5 分钟。

  hot3.png

.directive('ngCalculator', function($compile, $timeout){  return {    restrict: 'EA',    require: 'ngModel',    scope: {      devices: '=',      key: '=',      displayName: '=',      bindAttr: '='    },    link: function(scope, element, attrs, ngModel) {      scope.results = {};      var text = attrs.ngCalculator;      var replacements = text.match(/\[[a-zA-Z0-9]+\]/g);      var formula = text.match(/\<\-(.+)\-\>/);      text = text.replace(formula[0], '');      for(var i = 0; i < replacements.length; i++) {        var id = replacements[i].replace('[','').replace(']','');        text = text.replace(replacements[i], '
');      }      text = '
'+text+'
';      element.replaceWith($compile(text)(scope));      scope.$watchCollection('results', function() {        var input_check = true;        angular.forEach(replacements, function(replacement) {          var id = replacement.replace('[','').replace(']','');          var modelValue = parseInt(scope.results[id]);          if(!modelValue) {            input_check = false;          }        });        if(input_check == true){          var formula_instance = formula[1];          angular.forEach(replacements, function(replacement) {            var id = replacement.replace('[','').replace(']','');            var regex = new RegExp(id, "g");            formula_instance = formula_instance.replace(regex, scope.results[id]);          });          ngModel.$setViewValue(scope.$eval(formula_instance));          ngModel.$render();        }      });    }  }})

这是一个自定义计算器的指令,用来解析一串字符,效果图如下:

115808_09L0_248437.png

能处理穿插在自然语言里计算公式.

使用方法:

其实sample字符串是生成表单的,[n]这个是变量替换,将变量替换成 input[type="text"],

<-a*b*0.01+c*d*0.01*12+e+f+g->

这是变量拼凑起来的计算公式,

ngModel的result返回计算结果。

转载于:https://my.oschina.net/imot/blog/497244

你可能感兴趣的文章
Android内核剖析 目录
查看>>
jsf如何通过按钮切换在同一个页面上的非公共部分显示不同的内容
查看>>
/etc/fstab 文件解释
查看>>
如何用函数表示数(四)数的彻底消失
查看>>
windows 7下同时安装visual studio 2012和2010
查看>>
android--------Socket的简单了解
查看>>
安卓错误Emulator: error: x86 emulation currently......
查看>>
Asynchronous CDI Events
查看>>
mynginx.conf
查看>>
Oracle——20数据库恢复与备份
查看>>
鼠标坏了你别扔,可以修的
查看>>
CentOS 中使用yum时常见的一种提示信息
查看>>
记一次ssh登录异常
查看>>
01-利用思维导图梳理JavaSE-Java语言基础
查看>>
RocketMQ几种搭建模式说明
查看>>
程序分析思路
查看>>
beangle commons 4.0.0 release
查看>>
数据仓库中的维度表和事实表概述
查看>>
淘气的页数 - 格式化字符串
查看>>
使用vim保存权限不够的文件
查看>>