AngularJS ng — повторение, ng — модель при вводе текста, странное поведение

я новичок в AngularJS, я пытаюсь сделать код ниже

var app = angular.module('SomeApp', []);

app.controller('QuotationController', function($scope) {

   $scope.init = function(){
     $scope.chargableDescription = [""];
     $scope.chargablePrice = [];
     $scope.chargableQuantity = [];
     $scope.chargableTotal = [];

   }

   $scope.chargableInput = function($last){

     if ( $last ) {
       $scope.chargableDescription.push([""]);
     }
   }
});

По сути, я пытаюсь добиться того, чтобы вставить всю группу ввода, когда пользователь вводит что-то в последнее поле chargableDescription.

      <div class="chargable-group" ng-repeat="item in chargableDescription" >

            <div class="col-md-3">
                 <label class="form-control-label" for="l2" id="chargable-label">Chargable Item</label>
            </div>

            <div class="col-md-9" id="chargable-header">
                 <textarea name="chargable[]" class="form-control dynamic chargable" placeholder="Chargable Description" ng-model="chargableDescription[$index]" ng-keypress="chargableInput($last)"> </textarea>
                 <br>
                 <input type="number" class="form-control" step="0.01" name="chargable-price-1" placeholder="Chargable Price" ng-model="chargablePrice[$index]">
                 <br>
                 <input type="number" class="form-control" name="chargable-quantity-1" placeholder="Chargable Quantity" ng-model="chargableQuantity[$index]">
                 <br>
                 <input type="number" class="form-control" step="0.01" name="chargable-total-1" placeholder="Chargable Total" readonly ng-model="chargableTotal[$index]" >
            </div>

      </div>

Однако это помогает, мне интересно, почему, когда я ввожу какой-либо текст в текстовую область, курсор исчезает после ввода символа. Как удалить это поведение и что может быть фактором, вызывающим это поведение?

ОБНОВИТЬ :

РЕШЕНО Я добавил ng-model-options = {updateOn: 'blur'}, и похоже, что это решает проблему


person Brian Ruchiadi    schedule 23.01.2017    source источник
comment
Пожалуйста, удалите вопрос, так как в противном случае он всегда будет отображаться без ответа, и это будет тратить чье-либо время, когда они начнут его читать, чтобы решить его. Или же напишите [Решено] в самом заголовке.   -  person Ravi Shankar Bharti    schedule 23.01.2017


Ответы (1)


У меня работает https://plnkr.co/IV9t4fhln5v3l81NHaPC

Какая у вас версия Angular?

(function() {

  'use strict';

  var app = angular.module('SomeApp', []);

  app.controller('QuotationController', function($scope) {

    $scope.init = function() {
      $scope.chargableDescription = [""];
      $scope.chargablePrice = [];
      $scope.chargableQuantity = [];
      $scope.chargableTotal = [];

    }

    $scope.chargableInput = function($last) {

      if ($last) {
        $scope.chargableDescription.push([""]);
      }
    }

    $scope.init();
  });


})();
person Karl San Gabriel    schedule 23.01.2017
comment
Я вижу, что это работает по ссылке выше, но это не работает со мной. Но почему вы добавляете $scope.init(); после логики? Разве это не обновление исходного значения? Я добавил ng-model-options = { updateOn : 'blur' }, и это работает очень хорошо, но мне интересно, почему. Ты знаешь почему? Спасибо за ваш ответ и надеюсь, что вы можете объяснить мне, потому что я действительно новичок в AngularJS. @Карл Сан Габриэль - person Brian Ruchiadi; 23.01.2017