我在一个页面上使用angular-slider.js,当滑块的值发生变化时会发出服务器请求。在用户松开鼠标按钮之前,我不希望这种情况发生,换句话说,onmouseup。
这在使用 '=' isloate 作用域并将其传递给作用域变量的指令中很容易做到。
然而,在 angular-slider 中同样的事情并没有像我预期的那样表现。
在 html 中,我添加了属性“mousewatch”,它被分配了 $scope 变量“mouseStatus”
$scope.mouseStatus = 0;
<slider floor="0" ceiling="10" ng-model-low="pMinBedsVal" ng-model-high="pMaxBedsVal" mousewatch="mouseStatus"></slider>
...并将其添加到指令中作为隔离范围:
sliderDirective = function($timeout) {
return {
restrict: 'EA',
scope: {
floor: '@',
ceiling: '@',
step: '@',
precision: '@',
ngModel: '=?',
ngModelLow: '=?',
ngModelHigh: '=?',
translate: '&',
mousewatch: "="
},
...最后我将 mousewatch 的值添加到滑块指令中的 onEnd 和 onStart 事件中:
onEnd = function() {
pointer.removeClass('active');
scope.mousewatch = 0;
console.log("mouseup");
ngDocument.unbind(events.move);
return ngDocument.unbind(events.end);
};
onStart = function(event) {
pointer.addClass('active');
scope.mousewatch = 1;
console.log("mousedown");
dimensions();
event.stopPropagation();
event.preventDefault();
ngDocument.bind(events.move, onMove);
return ngDocument.bind(events.end, onEnd);
};
问题是指令中为 scope.mousewatch 设置的值没有传递给控制器中的 $scope.mouseStatus。