Как обновить из «ввода» фактическое видимое «значение» на странице с помощью AngularJS

0

У меня возникают проблемы с установкой значения вида некоторых полей ввода, которые заполняются программно:

  1. когда он пуст, скрипт добавляет "0";
  2. если число> 360, сценарий устанавливается на "360".
<p>
    <span style="color: #81a0ff; font-size: 3em; font-weight: bold;">
        &alpha; = {{angle1}}&deg;
    </span>
</p>
<input type="text" id="ang_1" maxlength="3" 
    onfocus = "this.value = parseInt(value) || ''"
    onblur = "this.value = parseInt(value) || '0'" 
    onkeyup="this.value = minmax(this.value, 0, 360) || 0"
    ng-model="angle1"
    ng-init="angle1='0'" >
function minmax(value, min, max)
{
    if (parseInt(value)== 0 || parseInt(value)== 00 || parseInt(value)== 000 )
        return 0;
    if(parseInt(value) < min)
        return 0;
    else if(parseInt(value) > max)
        return 360;
    else return value = parseInt(value);
}

Как я могу исправить эту проблему?

  • 1
    Поместите свое решение в jsfiddle.net
  • 0
    Что это за this.value в HTML? И является ли minmax глобальной функцией?
Показать ещё 6 комментариев

1 ответ

0
Лучший ответ

Здесь это решение моей проблемы:

   http://jsfiddle.net/MTfRD/2207/  

В результате: скрипт исправляет число в соответствии с функцией minmax (последний должен находиться в контроллере), а угловое изображение отображает видимое значение поля ввода.
Спасибо всем за помощь и особенно за Asok за подсказку.
HTML

<div ng-app="DispAngleApp"  ng-controller="AppCtrl as app">
<p><span class="alfa">&alpha; = {{angle1}}&deg;</span></p>
<input type = "text" 
        id = "ang_1"
        maxlength = "3"
        onfocus = "this.value = parseInt(value) || ''"
        onblur = "this.value = parseInt(value) || '0'"
        ng-change = "minmax(angle1, 0, 360) || 0"
        ng-model = "angle1"
        ng-init = "angle1='0'" ><br>
<p><span class = "beta">&beta; = {{angle2}}&deg;</span></p>
<input type = "text"
        id = "ang_2"
        maxlength = "3"
        onfocus = "this.value = parseInt(value) || ''"
        onblur = "this.value = parseInt(value) || '0'"
        ng-change = "minmax2(angle2, 0, 360) || 0"
        ng-model = "angle2"
        ng-init = "angle2='0'"><br>

AngularJS:

var myApp = angular.module('myApp',[]); function AppCtrl($scope) {
$scope.minmax = function (value, min, max) {
    if (value == '')
        return $scope.angle1 = 0;
    if (parseInt(value) == 0 || parseInt(value) == 00 || parseInt(value) == 000)
        return $scope.angle1 = 0;
    if (parseInt(value) < min)
        return $scope.angle1 = 0;
    else if (parseInt(value) > max)
        return $scope.angle1 = 360;
    else return $scope.angle1 = parseInt(value);
};
$scope.minmax2 = function (value, min, max) {
    if (value == '')
        return $scope.angle2 = 0;
    if (parseInt(value) == 0 || parseInt(value) == 00 || parseInt(value) == 000)
        return $scope.angle2 = 0;
    if (parseInt(value) < min)
        return $scope.angle2 = 0;
    else if (parseInt(value) > max)
        return $scope.angle2 = 360;
    else return $scope.angle2 = parseInt(value);
};
$scope.change_val = function (value){
    var va = value;
    va = va.replace(/^\[\'|\'\]$/g,'').split("', '");
    $scope.angle1 = va[0];
    $scope.angle2 = va[1];
} } function change_val(el){
var ang_1 = document.getElementById("ang_1");
var ang_2 = document.getElementById("ang_2");
var v = el.value;
v = v.replace(/^\[\'|\'\]$/g,'').split("', '");
ang_1.value = v[0];
ang_2.value = v[1];}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню