2015-06-26 3 views
1

У меня есть массив betSlip, где я делаю некоторую проверку, скажем, что массив имеет 4 индекса прямо сейчас, каждый индекс имеет input, поэтому у меня есть 4 входа, по одному на индекс.Очистить входные данные от индекса

Пример: Значения я типа на входах:

1 вход: 10

вход 2: 10

3 входа: 10

4 входа: 10

Следующий вход не может быть больше предыдущего. Что в моем приложении означает, что если я перейду ко второму входу и наберите номер 1, входы 3 и 4 снова вернутся к 0. Но поскольку у меня есть это в моем приложении до сих пор, если вы вводите 1 во 2-й вход, ТОЛЬКО третий вход возвращается к 0, а не к другим.

Итак, чтобы быть ясным: если у меня есть 10 входов, где я набирал число 100 в каждом отдельном входе, и я иду на третий вход и тип 99, тогда остальные входы должны быть обратно на 0. За исключением предыдущие входы.

Я использую угловые и также Lodash.

Я сделал пару фотографий

enter image description here

На этом снимке я типизированных 1 во 2-й вход, и только 3-й вход на 0, мне нужно каждый вход обратно в 0, раздвигая от текущий индекс.

enter image description here

и вот мой код:

$scope.riskWinCalculations2 = function(slip, type, index) { 
    var previousSlip = $scope.betSlip[index - 1], 
     currentSlip = $scope.betSlip[index], 
     nextSlip = $scope.betSlip[index + 1]; 


     if (currentSlip.risk.length && nextSlip != undefined) { 
     if (currentSlip.risk < nextSlip.risk) { 
      nextSlip.risk = 0; 
      nextSlip.win = 0; 
     } 
     } 
} 

Я знаю, что моя ошибка здесь в этом вар nextSlip, где все, что я делаю это сказать приложение, чтобы положить пустую строку в следующем входе если текущее значение меньше. Но именно поэтому я здесь, мне нужно знать, как его решить, принимая во внимание все последующие входы, а не только правильный следующий ввод.

Кроме того, I made a video

UPDATE, чтобы добавить больше ОБЪЯСНЕНИЕ

если каждый вход имеет 10 в качестве значения, и у вас есть 5 входов, то это означает:

1 вход: 10

2 input: 10

3 входа: 10

4 входа: 10

5 вход: 10

, если вы идете на 3 входа и 5 типа, это означает:

1 вход: 10

2 входа: 10

3 входа: 5

4 входа: 0

5 вход: 0

так, как вы видите другие входы получить обратно в 0, что начальное значение. Но предыдущие входы сохраняют то же самое.

ответ

1
 //if the user tries to play with the input: 
     //he can not put lower amount in a previous input, 
     //when the next input is already filled out 
     _.each($scope.betSlip, function(slip, indexSlip) { 
     if (indexSlip > index) { 
      slip.risk = ''; 
      slip.win = ''; 
     } 
     }); 
1

Если я правильно вас понял, я сделал вышеуказанную логику, используя ng-repeat и ng-blur. Дайте мне знать, если какая-либо логика отсутствует.

<div ng-app> 
    <h2>Todo</h2> 
    <div ng-controller="TodoCtrl"> 
     <p ng-repeat='data in datas'> 
      <label>{{$index+1}}</label><input ng-model='data.value' ng-blur='checkRisk($index)'/>  
     </p> 
    </div> 
</div> 


function TodoCtrl($scope) { 
    $scope.datas = [{value:10},{value:10},{value:10},{value:10},{value:10}]; 
    $scope.checkRisk = function(index){  
     for(var i=index+1;i<$scope.datas.length;i++){     
       $scope.datas[i].value=0; 
      }   
    }; 
} 

проверка jsFiddle http://jsfiddle.net/gopinathshiva/U3pVM/16711/

+0

В своем первом входе под названием '' 'TODO''' у вас есть 10, как и в других входов. Если вы наберете '' '' '', скажем, на 4-м входе, остальные входы, отходящие от 4-го, должны вернуться к '' '0''', чего не происходит в вашем примере. В вашем примере я могу напечатать что угодно. Текущий вход должен быть равен или меньше предыдущего. – NietzscheProgrammer

+0

Вы упомянули ** остальная часть входов должна быть обращена к нулю, а не к предыдущим входам **. Поэтому мне понравилось –

+0

Посмотрите: '' 'Текущий вход должен быть равен или меньше предыдущего.' '', Что означает: вернуть обратно в 0 другие входы, разделяющие текущий. – NietzscheProgrammer

Смежные вопросы