Javascript AngularJS:如何在滑块按钮更改时调用函数?
我对AngularJS很陌生,所以非常感谢您对我的帮助 我有一个从2到6的滑块。数字表示小时数 我想做的不是让click指令计算每次单击的时间*成本,而是让html和js进行双向数据绑定。因此,当我将滑块移动一个槽口时,它将重新计算价格并以html显示 到目前为止,我得到的是:Javascript AngularJS:如何在滑块按钮更改时调用函数?,javascript,jquery,html,angularjs,Javascript,Jquery,Html,Angularjs,我对AngularJS很陌生,所以非常感谢您对我的帮助 我有一个从2到6的滑块。数字表示小时数 我想做的不是让click指令计算每次单击的时间*成本,而是让html和js进行双向数据绑定。因此,当我将滑块移动一个槽口时,它将重新计算价格并以html显示 到目前为止,我得到的是: <body ng-controller="pricingCtrl"> <div style="width: 100%; margin-bottom: 10px;" id="slider">
<body ng-controller="pricingCtrl">
<div style="width: 100%; margin-bottom: 10px;" id="slider"></div>
<div class="minumum-statement">*minimum 2 hours</div>
<div class="hour-slider">
<div class="slider-label">
<div class="slider-hour2">2</div>
<div class="slider-hour3">3</div>
<div class="slider-hour4">4</div>
<div class="slider-hour5">5</div>
<div class="slider-hour6">6</div>
</div>
</div>
<div class="calculate-button-container">
<div ng-click="calculatePrice()" class="calculate-button"> Calculate </div>
</div>
<div class="final-price-container">
<div>
<div class="final-price">$ {{price}}</div>
</div>
</div>
我在考虑使用ng watch来查看js文件中sliderValue的值。如果价格发生变化,则重新计算价格,然后使用表达式将价格显示回html 搜索“noUiSlider事件”的快速搜索结果返回。尝试添加slider.noUiSlider.on('slide',$scope.calculatePrice)代码>发送到控制器。
var app = angular.module('pricingApp', []);
app.controller('pricingCtrl', function ($scope) {
var slider = document.getElementById('slider');
noUiSlider.create(slider, {
start: [16],
range: {
'min': [ 0 ],
'max': [ 100 ]
},
step: 16
});
$scope.inputData = {};
$scope.inputData.numAdults = '1';
$scope.inputData.numChildren = '1';
$scope.price = 60;
$scope.calculatePrice = function () {
var sliderValue = slider.noUiSlider.get();
var numHours = (sliderValue / 16) + 1;
if (numHours > 6) {
numHours = 'All Day';
}
if (Number($scope.inputData.numAdults) + Number($scope.inputData.numChildren) === 1) {
$scope.price = 25 * numHours;
}
else {
$scope.price = (15 * (Number($scope.inputData.numAdults) + Number($scope.inputData.numChildren))) * numHours;
}
$scope.priceData = {
numAdults: $scope.inputData.numAdults,
numChildren: $scope.inputData.numChildren,
price: $scope.price,
totalNumPeople: Number($scope.inputData.numChildren) + Number($scope.inputData.numAdults),
numHours: numHours
};
}
});