4
jQueryUI的滑塊值反映我有以下指令:AngularJS - 對模型
directive('yearSlider', function(Filter) {
return {
restrict: 'E', // must be an element
transclude: false, // don't preserve content
controller: function($scope) {
$scope.$watch('yearMin + yearMax', function(newVal, oldVal) {
if(newVal === oldVal) return; // skip initialization
$("#year-slider").slider("option", "min", parseInt($scope.yearMin));
$("#year-slider").slider("option", "max", parseInt($scope.yearMax));
$("#year-slider").slider("value", $("#year-slider").slider("value"));
});
},
link: function postLink($scope, $element) {
$element.slider({
range: true,
min: 1900,
max: new Date().getFullYear(),
values: [ 1900, new Date().getFullYear() ],
slide: function(event, ui) {
$scope.yearFrom = ui.values[0];
$scope.yearTo = ui.values[1];
$scope.$apply();
},
change: function(event, ui) {
$scope.yearFrom = ui.values[0];
$scope.yearTo = ui.values[1];
Filter.apply($scope);
}
});
},
template:
'<div id="year-slider"></div>',
replace: true
}
}).
該指令在視圖中使用,它正確呈現一個滑塊。
我將滑塊的兩個值分配給兩個模型yearFrom
和yearTo
以獲取由滑塊指定的年份範圍。在某些情況下,我需要更改滑塊的最小值/最大值,這就是我在上面的controller
中所做的。
這裏的問題是,我在看兩個值yearMin
和yearMax
和這兩款機型連續改變導致控制器和$element.slider
change
兩次執行。
我想要實現的是執行一次,但事實是,我有兩個模型使它在邏輯上不可能。
您發佈了一個問題,然後在60秒內回答自己的問題? :| – keyboardSmasher
@keyboardSmasher快速手指快! – abstractpaper