使用角度

时间:2015-11-20 11:31:29

标签: javascript angularjs

我有两种输入类型:"范围"和"数字"。如果我使用输入字段更改数字,则会在标题和范围幻灯片中更新该值。 但是,如果我使用范围幻灯片更改它,我还想更新输入字段中的值。现在,只更新标题中的值。

HTML

<div ng-app>
<div ng-controller="amountController">
     <h2>{{"Amount: " + amount + "$"}}</h2>
    <div class="row">
        <div class="item range" id="index3-rangeAmount"> <i>5000$</i>
            <input type="range" name="volume" min="5000" max="50000" value="{{amount}}" ng-model="amount"> <i>50000$</i>
        </div>
        <div>
            <input type="number" id="index3-inputAmount" min="5000" max="50000" value="{{getAmount()}}" ng-model="amount">
        </div>
    </div>
</div>

的Javascript

function amountController ($scope) {
$scope.amount = 7500;
$scope.getAmount = function() {
    return $scope.amount;
};

}

以下是jsfiddle的链接:jsfiddle

3 个答案:

答案 0 :(得分:4)

配合,它与输入类型有关,因为你的输入是数字类型,但你绑定的值是文本类型,所以你可以使用watch来解决这个问题,为你创建一个小提琴,检查一下:

function MyCont($scope) {
$scope.value = 0;

$scope.$watch('value',function(val,old){
   $scope.value = parseInt(val); 
});
};

http://jsfiddle.net/2e15u0bm/

答案 1 :(得分:1)

Angular尚不支持`input type =“range”。

有一个fix,其处理rangenumber相同。它标记为在 1.5-Cadidate 版本中修复。无论如何,这个问题已经开放了很长一段时间。希望修复程序能够进入下一个版本。

答案 2 :(得分:0)

您可以为输入类型范围注册更改(ng-​​change)方法,而不是像Kevin Simple建议的那样注册观察者,而不是

$scope.valueChanged = function() {
    $scope.amount = parseInt($scope.amount);
}

将由ng-change="valueChanged()"调用:

<input type="range" ng-change="valueChanged()" name="volume" min="5000" max="50000" value="{{amount}}" ng-model="amount"> <i>50000$</i>

Working Fiddle