κΈ°λ³Έμ μΌλ‘ λ²μ μ λ ₯μ ng-modelμ μ¬μ©νμ¬ μ΄κΈ° κ°μΌλ‘ μ€μ λ©λλ€. HTML μμμ μ€μ κ°κ³Ό λ²μ μ¬λΌμ΄λμ μμΉκ° μ¬λ°λ₯΄μ§ μμ΅λλ€. μ¬λΌμ΄λ μμΉμ html μ λ ₯ κ°μ΄ λͺ¨λΈ λ³μμ λκΈ°ν λ κ²μΌλ‘ μμν©λλ€.
μ¬κΈ° μ¬νμ΄ μμ΅λλ€ : http://jsfiddle.net/fschwiet/HVp2J/
Windows 8μμ μ€νλλ Chrome λ° Firefoxμμ νμΈλμμ΅λλ€.
input [type = range]μ λν΄ μ΄λ €μλ λ€λ₯Έ λ¬Έμ κ° μμ§λ§ κ΄λ ¨μ΄ λͺ ννμ§ μμ΅λλ€.
μ΄κ²μ Angular 1.2.14μ μ¬μ ν λ¬Έμ μ λλ€ : http://jsfiddle.net/HVp2J/7/
ν΄κ²° λ°©λ²μΌλ‘ $ timeout νΈλ€λ¬ λ΄μμ λͺ¨λΈ κ°μ μ€μ ν μ μμ΅λλ€.
$ timeoutμ λμμ΄λμ§ μμ§λ§ λ¬Έμ λ λ¨μ μμ΅λλ€.
@fschwiet : http://jsfiddle.net/HVp2J/9/
@ Rajat-Chowdhary μ£μ‘ν©λλ€. $ timeoutμ΄ ν΄κ²° λ°©λ²μΌλ‘ μλνλ λ°©λ²μ 보μ¬μ£Όλ μ½λ μνμ ν¬ν¨ν΄μΌν©λλ€. http://jsfiddle.net/fschwiet/YC4av/
ν΄κ²° λ°©λ²μ΄ μλνλ €λ©΄ $ timeout μ½λ°±μ΄μμ λκΉμ§ λͺ¨λΈ κ°μ μ΄κΈ°ν ν μ μκΈ° λλ¬Έμ ν΄κ²° λ°©λ²μ΄ μ΄μν΄ λ³΄μ λλ€.
λ¬Έμ λ₯Ό μ°Ύμ κ² κ°μ΅λλ€.
κ°λλ μ΅μ, μ΅λ, λ¨κ³λ₯Ό μ€μ νκΈ° μ μ κ°μ μ€μ νλ―λ‘ λ²μκ° μλͺ»λ μμΉμμλ κ²μ²λΌ 보μ
λλ€. λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄μ΄ μ§μλ¬Έμ μ¬μ©νμ΅λλ€.
angular.module('angular-range', []).directive('range', function() {
return {
replace: true,
restrict: 'E',
scope: {
value: '=ngModel',
min: '=rangeMin',
max: '=rangeMax',
step: '=rangeStep',
},
template: '<input type="range"/>',
link: function(scope, iElement, iAttrs) {
scope.$watch('min', function() { setValue(); });
scope.$watch('max', function() { setValue(); });
scope.$watch('step', function() { setValue(); });
scope.$watch('value', function() { setValue(); });
function setValue() {
if (
angular.isDefined(scope.min) &&
angular.isDefined(scope.max) &&
angular.isDefined(scope.step) &&
angular.isDefined(scope.value)
) {
iElement.attr("min", scope.min);
iElement.attr("max", scope.max);
iElement.attr("step", scope.step);
iElement.val(scope.value);
}
}
function read() {
scope.value = iElement.val();
}
iElement.on('change', function() {
scope.$apply(read);
});
}
};
});
λ€μμ private λ²μκ°μλ μ λ²μ μ ngRangeμ λλ€.
.module('ngRange', [])
.directive('ngRange', function() {
return {
replace: true,
restrict: 'E',
require: 'ngModel',
template: '<input type="range"></input>',
link: function(scope, element, attrs, ngModel) {
var ngRangeMin;
var ngRangeMax;
var ngRangeStep;
var value;
if (!angular.isDefined(attrs.ngRangeMin)) {
ngRangeMin = 0;
} else {
scope.$watch(attrs.ngRangeMin, function(newValue, oldValue, scope) {
if (angular.isDefined(newValue)) {
ngRangeMin = newValue;
setValue();
}
});
}
if (!angular.isDefined(attrs.ngRangeMax)) {
ngRangeMax = 100;
} else {
scope.$watch(attrs.ngRangeMax, function(newValue, oldValue, scope) {
if (angular.isDefined(newValue)) {
ngRangeMax = newValue;
setValue();
}
});
}
if (!angular.isDefined(attrs.ngRangeStep)) {
ngRangeStep = 1;
} else {
scope.$watch(attrs.ngRangeStep, function(newValue, oldValue, scope) {
if (angular.isDefined(newValue)) {
ngRangeStep = newValue;
setValue();
}
});
}
if (!angular.isDefined(ngModel)) {
value = 50;
} else {
scope.$watch(
function () {
return ngModel.$modelValue;
},
function(newValue, oldValue, scope) {
if (angular.isDefined(newValue)) {
value = newValue;
setValue();
}
}
);
}
function setValue() {
if (
angular.isDefined(ngRangeMin) &&
angular.isDefined(ngRangeMax) &&
angular.isDefined(ngRangeStep) &&
angular.isDefined(value)
) {
element.attr("min", ngRangeMin);
element.attr("max", ngRangeMax);
element.attr("step", ngRangeStep);
element.val(value);
}
}
function read() {
if (angular.isDefined(ngModel)) {
ngModel.$setViewValue(value);
}
}
element.on('change', function() {
if (angular.isDefined(value) && (value != element.val())) {
value = element.val();
scope.$apply(read);
}
});
}
};
});
μ΄κ²μ μ¬μ ν ββλ¬Έμ μ λλ€, κ·Έλ μ£ ?
λ€ +1
μ, μ¬μ ν λ¬Έμ μ λλ€.
κ°μ΄ 100 μ΄μμΌ λ AngularJSλ₯Ό μ¬μ©νμ¬ input [range] κ°μ μ΄κΈ°ννλ λ°©λ²μ stackoverflowμμ λΉμ·ν μ§λ¬Έ
+1
+1, μ λ ₯ λ²μλ₯Ό μ λ ₯ λ²νΈμ κ²°ν©νλ©΄ μ΅μ μ΄λμμ΅λλ€.
μ΄ λ¬Έμ μ λν +1
κ°μ λ¬Έμ μ μ§λ©΄ : +1
μ-κ°μ λ¬Έμ +1
μ΄κ²μ κΈ°λ³Έ html5μ λλ€-μ΄κ²μ λν μνλ 무μμ λκΉ?
μ΄κ²μ κ³ λ €νμμμ€ : https://github.com/danielcrisp/angular-rangeslider/issues/51
μ€λ₯ : ngModel : numfmt λ²μ μ¬λΌμ΄λκ° throwλ©λλ€.
@ ardf69 μ루μ
μ λ€μκ³Ό κ°μ΄ μ‘°μ νμ΅λλ€.
angular.module('common').directive('rangeSlider', [function () {
return {
replace: true,
restrict: 'E',
require: 'ngModel',
template: '<input type="range"/>',
link: function (scope, element, attrs, ngModel) {
var ngRangeMin;
var ngRangeMax;
var ngRangeStep;
var value;
function init() {
if (!angular.isDefined(attrs.ngRangeMin)) {
ngRangeMin = 0;
} else {
scope.$watch(attrs.ngRangeMin, function (newValue, oldValue, scope) {
if (angular.isDefined(newValue)) {
ngRangeMin = newValue;
setValue();
}
});
}
if (!angular.isDefined(attrs.ngRangeMax)) {
ngRangeMax = 100;
} else {
scope.$watch(attrs.ngRangeMax, function (newValue, oldValue, scope) {
if (angular.isDefined(newValue)) {
ngRangeMax = newValue;
setValue();
}
});
}
if (!angular.isDefined(attrs.ngRangeStep)) {
ngRangeStep = 1;
} else {
scope.$watch(attrs.ngRangeStep, function (newValue, oldValue, scope) {
if (angular.isDefined(newValue)) {
ngRangeStep = newValue;
setValue();
}
});
}
if (!angular.isDefined(ngModel)) {
value = 50;
} else {
scope.$watch(
function () {
return ngModel.$modelValue;
},
function (newValue, oldValue, scope) {
if (angular.isDefined(newValue)) {
value = newValue;
setValue();
}
}
);
}
if (!ngModel) {
return;
}
ngModel.$parsers.push(function (value) {
var val = Number(value);
if (val !== val) {
val = undefined;
}
return val;
});
}
function setValue() {
if (
angular.isDefined(ngRangeMin) &&
angular.isDefined(ngRangeMax) &&
angular.isDefined(ngRangeStep) &&
angular.isDefined(value)
) {
element.attr("min", ngRangeMin);
element.attr("max", ngRangeMax);
element.attr("step", ngRangeStep);
element.val(value);
}
}
function read() {
if (angular.isDefined(ngModel)) {
ngModel.$setViewValue(value);
}
}
element.on('change', function () {
if (angular.isDefined(value) && (value != element.val())) {
value = element.val();
scope.$apply(read);
}
});
init();
}
};
}
]);
+1, ng-ifλ‘ [μ λ ₯ μ ν = λ²μ]λ₯Ό μ ν ν λλ κ°μ λ¬Έμ κ° μμ΅λλ€.
λλ λνμ΄ λ¬Έμ λ‘ λ¬λ¦¬κ³ , κ·Έκ²μ λν΄ μ€ν μ€λ²νλ‘ μ§λ¬Έμ μΌλ€, "κ°λμμ λ°μΈλ ngModel _before_ λ²μ λ³μμ μμ±μ μ
λ ₯μ κ²°ν© value
" . μ§λ¬Έμλμ΄ λ¬Έμ λ₯Ό μ¬ννλ μ€ν κ°λ₯ν μ½λ μ‘°κ°μ΄ ν¬ν¨λμ΄ μμ΅λλ€.
μΌλΆ ν΄κ²° λ°©λ²μ Stack Overflowμ λν λ΅λ³μΌλ‘ κ²μλμμ΅λλ€. λ΄ κ²½μ°μ μ μ© ν μμλ κ²μ $inputElement.prop()
μ ν¨κ» DOM μ‘°μμ μ¬μ©νμ¬ min
, max
λ° step
κ°μ μ€μ νλ κ²μ
λλ€ (νμν μμ±). λ΄ μ¬μ©μ μ§μ μ§μλ¬Έμ κΈ°λ³Έ <input>
μ value
κ° μ²μ μ€μ λκΈ° μ μμ΄ DOM μ‘°μμ μννλ©΄ λ¬Έμ λ₯Ό νΌν μ μμ΅λλ€.
μ΄ λ²κ·Έλ₯Ό ν΄κ²°νλ κ²μΌλ₯Έ λ°©λ²μ μ΅μ / μ΅λ λ° λ¨κ³ κ°μ 100μΌλ‘ λλλ κ²μ λλ€. λ°λΌμ 300μ 3.0μ΄λκ³ κ°μ 100 μλλ‘ λ¨μ΄μ§λλ€. κ·Έλ° λ€μ νμμ λ°λΌ λ€μ κ³±ν©λλ€. λκ΅°κ°μκ² μ μ© ν μλ μμ΅λλ€.
+1 μ΄κ²μ λ§€μ° μ±κ°μ μΌμ λλ€.
+1
+1
+1
λ λ€λ₯Έ κ²μΌλ₯Έ ν΄κ²° λ°©λ² ν΄νΉ :
$timeout(function () {
angular.element('.slider-input').val(amount);
});
+1
GitHubμ μλ‘μ΄ λ°μ κΈ°λ₯μ μ¬μ©νλ©΄ λ μ΄μ "+1"μ μ£Όμ ν νμκ° μμ΅λλ€. λμ μ΄ νΈμ 첫 λ²μ§Έ λκΈ μ€λ₯Έμͺ½ μλ¨μμλ "+ : smile :"λ₯Ό ν΄λ¦ ν λ€μ : +1 : ( "+1")μ μ ννμ¬ κ΄μ¬μ νμ ν μ μμ΅λλ€. μ΄λ κ²νλ©΄μ΄ λ¬Έμ μ κ°μ ν λͺ¨λ μ¬λμκ² μΈλͺ¨μλ μλ¦Όμ 보λ΄λ κ²μ λ°©μ§ ν μ μμ΅λλ€.
ng-modelμ μ κ±°νμ¬ ondrag λ°©λ²μ μ¬μ©νμ¬ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
μ΄ http://codepen.io/nagarajumusini/pen/BKpGJz νμΈ
+1
+1
μ λ ₯μ ng-initλ₯Ό μΆκ°νλ©΄ μ΄κΈ° κ°μ μ€μ ν μ μμ΅λλ€.
<input type="range" class="slider-years" min="0" max="30" step="1" value="0" data-ng-model="metier.anneeExperience" data-ng-init="metier.anneeExperience ? metier.anneeExperience = metier.anneeExperience : metier.anneeExperience = 0" />
λ€μμμ μ루μ μ μ°Ύμμ΅λλ€.
μ°λ¦¬λ μ΄κ²μ (λ§μ§λ§μΌλ‘) λ Έλ ₯νκ³ μμ΅λλ€. https://github.com/angular/angular.js/issues/5892 μ 볡μ λ³ΈμΌλ‘ λ«κΈ°
$ (λ¬Έμ) .ready (function () {
angular.element ( '. yourclasshere'). val (valueoftheslideronload);
});
μ΄ jQuery ν΄κ²° λ°©λ²μ νμ΄μ§κ°λ‘λ λ λ κ°μ μ€μ ν μ μλλ‘ μλνμ§λ§ μ¬λΌμ΄λ 컨νΈλ‘€μ κ°μ ν°μΉ ν λκΉμ§ λκΈ°νλμ§ μμ΅λλ€.
@davedx μλ§λ μ΄κ²μ΄ λ¬Έμ κ° ν΄κ²°λκΈ° μ μ κ°μ₯ μ’μ λ°©λ²μ λλ€.
<input type="range" min="15"
data-ng-init="signup.age=30" value="30" max="85" step="1"
name="ageInput" class="form-control input-lg" ng-model="signup.age"
oninput="ageOutputId.value = ageInput.value" />
<output name="ageOutputName" id="ageOutputId">30</output>
κ°μ₯ μ μ©ν λκΈ
GitHubμ μλ‘μ΄ λ°μ κΈ°λ₯μ μ¬μ©νλ©΄ λ μ΄μ "+1"μ μ£Όμ ν νμκ° μμ΅λλ€. λμ μ΄ νΈμ 첫 λ²μ§Έ λκΈ μ€λ₯Έμͺ½ μλ¨μμλ "+ : smile :"λ₯Ό ν΄λ¦ ν λ€μ : +1 : ( "+1")μ μ ννμ¬ κ΄μ¬μ νμ ν μ μμ΅λλ€. μ΄λ κ²νλ©΄μ΄ λ¬Έμ μ κ°μ ν λͺ¨λ μ¬λμκ² μΈλͺ¨μλ μλ¦Όμ 보λ΄λ κ²μ λ°©μ§ ν μ μμ΅λλ€.