【问题标题】:Change jQuery Knob Min/Max value更改 jQuery 旋钮最小值/最大值
【发布时间】:2014-06-25 22:22:46
【问题描述】:

我正在为 jquery-knob 小部件开发一个角度包装器。只要最大值不改变,以下工作即可。如果是这样,ng-model 绑定就会丢失。如果我不破坏手表开始时的旋钮小部件,最大值不会改变。

//Directive
app.directive('knobWidget', function () {
    return {
        scope: {
            maxbinding: "=maxbinding",
            maxbindingprop: "@maxbindingprop"
        },
        restrict: 'A',
        require: 'ngModel',
        link: function (scope, elem, attrs, ngModel) {
            ngModel.$render = function () {
                $(elem).val(ngModel.$viewValue).trigger("change");
            };          
            scope.$watch('maxbinding', function (newVal) {
                $(elem).knob('destroy');
                $(elem).knob({
                    min: 0,
                    max: scope.maxbinding[scope.maxbindingprop],
                    value: ngModel.$viewValue,
                    change: function (changeVal) {
                        scope.$apply(function () {
                            ngModel.$setViewValue(changeVal);
                        });
                    }
                });
            });
        }
    };
});
//Markup
<input knob-widget data-min="0" maxbinding="arr" maxbindingprop="length" ng-model="currentStop" />

在做:

$(elem).knob('max', scope.maxbinding[scope.maxbindingprop]);

也不行。有什么想法吗?

【问题讨论】:

    标签: javascript jquery jquery-knob mutability


    【解决方案1】:

    使用trigger('configure') 后跟trigger('change') 应该可以解决问题

    $(elem).trigger('configure', {
                      'max': scope.maxbinding[scope.maxbindingprop];
                  });
    $(elem).trigger('change');
    

    Source

    【讨论】:

    • 感谢您指出配置事件。一个问题是触发更改事件会尝试从 $watch() 中调用 $apply(),从而导致 $digest already in progress 错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 2015-11-10
    • 2014-04-17
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    相关资源
    最近更新 更多