У меня есть слайдер на основе jQuery, который обновляет поле ввода. Угловая ручка для содержания входного бокса не получает обновляется, когда ползунок перемещается, хотя значение обновляется (как показано на рисунке)Angularjs - ng-модель не обновляется с javascript
Код:
<form ng-app="myApp" ng-controller="myController" ng-submit="readData()" >
<input type="text" id="amount" value="3-7" ng-model="duration" ng-init="duration='3-7'" >
<button type="submit" value="Submit">Submit</button>
</form>
<div id="slider-range">
<script>
$(function() {
$("#slider-range").slider({
range: true,
min: 0,
max: 15,
values: [ 3, 7 ],
slide: function(event, ui) {
$("#amount").val( ui.values[ 0 ] + " - " + ui.values[ 1 ]);
}
});
});
</script>
</div>
<script type="text/javascript" >
var app = angular.module('myApp', []);
app.controller('myController', function ($scope, $http, $templateCache, $interval, $timeout) {
$scope.readData = function() {
alert($scope.duration); // always show the init value i.e. 3-7
};
});
</script>
Изображение
Редактировать 1: Чтобы продолжить исследование, я отправляю весь код.
<html>
<head lang="en">
<meta charset="UTF-8">
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script type="text/javascript" src="js/angular.js"></script>
<title></title>
</head>
<body >
<form ng-app="myApp" ng-controller="myController" ng-submit="readData()" >
<input type="text" id="amount" value="3-7" ng-model="duration" ng-init="duration='3-7'" >
<button type="submit" value="Submit">Submit</button>
</form>
<div id="slider-range">
<script>
</script>
</div>
<script type="text/javascript" >
var app = angular.module('myApp', []);
app.controller('myController', function ($scope, $http, $templateCache, $interval, $timeout) {
$scope.readData = function() {
alert($scope.duration);
};
});
$(function() {
$("#slider-range").slider({
range: true,
min: 0,
max: 15,
values: [ 3, 7 ],
slide: function(event, ui) {
$("#amount").val( ui.values[ 0 ] + " - " + ui.values[ 1 ]);
}
});
});
</script>
</body>
Я добавил этот $ apply фрагмент. Он не работает, вместе с ним возникает странное поведение в компоненте слайдера. Движение ползунка не отражается, когда я перетаскиваю ручки, хотя значение в #amount изменяется. – Mohitt
Я обновил комментарий, пожалуйста, проверьте. –
спасибо Mahesh :) – Mohitt