javascript - jquery-knob 在 Angular Directive(指令)中始终为 NAN

标签 javascript jquery angularjs jquery-ui angularjs-directive

我看过这篇文章:jQuery Knob displays NaN when value is 0 。这似乎没有回答我的问题。

我在具有隔离范围的可重用指令中使用 Angular 旋钮。问题是,旋钮始终为“NaN”,并且永远不会影响模型。

此外,我从 angular-knob 项目中提取了该指令,并将其作为主应用程序的指令,因为导入 ui-knob 模块也不起作用:

app.directive("knob", function () { //Doesn't crash
return {
vs...
var app = angular.module("app", ["ui.knob"]); //Injection exception occurs.

这是一个骗子:http://plnkr.co/edit/g6UK6RIFA2xfT59z8sjN?p=preview

有人知道如何解决这个问题吗?

编辑:我创建了另一个版本,简单得多,只是手动编译似乎不起作用:http://plnkr.co/edit/naG6ObMtad8nvHGOrhwI?p=preview

最佳答案

我创建了自己的指令,它包装了 jquery-knob 插件,它还提供了一些我需要的很酷的行为(动画、不同的颜色等),如果您愿意,可以使用它并根据需要操作它

//jquery-knob directive
.directive('knob', function() {

  function link( scope, element , attr ) {

    function draw() {
      element.empty();

      var tmpl = $('<input type="text">');

      var min = attr.min ? parseInt(attr.min) : 0;
      var max = attr.max ? parseInt(attr.max) : 0;
      var val = attr.value ? parseInt(attr.value) : "";
      var readonly = attr.readonly == "true" ? true : false;
      var sign = attr.sign ? attr.sign : "";
      var fgColor = "#00A65A"; //green - success

      var dangerLimit = attr.dangerLowerThen;
      var warnLimit = attr.warnLowerThen;

      if(dangerLimit && val < dangerLimit) {
        fgColor = "#F56954"; //red - danger
      } else if(warnLimit && val < warnLimit) {
        fgColor = "#F39C12"; //yellow - warning
      }

      element.append(tmpl);

      var options = {
        value : 0,
        min : min,
        max : max > val ? max : val,
        dynamicDraw: true,
        fgColor : fgColor,
        readOnly : readonly,
        rtl : (attr.dir == 'rtl' ? true : false),
        draw : function () { $(this.i).val(this.cv + sign); }
      };
      tmpl.knob(options);

      tmpl.animate({
        value: 100
      }, {
        duration: 1000,
        easing: 'swing',
        progress: function () {
          $(this).val(Math.round(this.value/100 * val)).trigger('change');
        }
      })

    }

    scope.$watch(function () {
      return [attr.value, attr.max, attr.min , attr.readonly];
    }, draw, true);

  };

JSFiddle example

关于javascript - jquery-knob 在 Angular Directive(指令)中始终为 NAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25516389/

相关文章:

ember-cli 配置/环境中的 Javascript 对象

javascript - x 是 Javascript FF/Safari 中的保留关键字而不是 IE 中的保留关键字吗?

javascript - 单击添加类,然后延迟删除类(超时功能)

javascript - AngularJS:在保存到 Controller 之前从服务获取更新的数据

javascript - 正则表达式按字面意思匹配单词和\n

javascript - 如何使用 jaredpalmer/presspack 与 Google map 集成构建主题?

javascript - 视差背景没有正确排列

javascript - 禁用 jQuery 文件上传的拖放功能

angularjs - $route.current 在尝试获取当前参数时未定义

javascript - 从对象属性(字符串)在 JavaScript 中构造 RegExp