angularjs ng-paste не обновляет значение модели

Я использовал ng-paste для текстовой области при вставке ссылки в текстовую область, я вызываю пользовательскую функцию для сохранения этого значения. Пожалуйста, обратитесь к следующему коду

<textarea rows="1" ng-model="myObj.content"
              ng-paste="getContent(myObj)">
 </textarea>

$scope.getContent = function(a){
    console.log(a.content);
}

Но в консоли я всегда получаю значение undefined. Как я могу получить значение моего объекта?


person Eswara Reddy    schedule 27.10.2014    source источник
comment
Отредактировал мой ответ, надеюсь, это поможет!   -  person Mikko Viitala    schedule 27.10.2014


Ответы (2)


Передача модели в функцию на самом деле не имеет смысла, поскольку вы уже указали ng-model, поэтому его значение будет обновляться по мере того, как пользователь что-то вводит в textbox. Если вы хотите отслеживать изменения, вы можете настроить $watch для своей модели или указать функцию, используя ng-change.

Если вы хотите знать, что вставил пользователь, то это другая история. Обработка ng-paste может быть сложной. Чтобы получить доступ к фактическому событию, проще всего включить jQuery перед angularjs, а затем сделать, например. следующий:

HTML-шаблон

<textarea rows="3"
          placeholder="copy/paste here..."
          ng-init="content = null"
          ng-model="content" 
          ng-paste="paste($event.originalEvent)">
</textarea>

Контроллер

$scope.paste = function (event) {
  var item = event.clipboardData.items[0];
  item.getAsString(function (data) {
    console.log(data);
  });
};

Связанный плункер здесь http://plnkr.co/edit/ea5y5j


введите здесь описание изображения

person Mikko Viitala    schedule 27.10.2014
comment
какова ответственность $event.originalEvent? - person pedrommuller; 08.11.2014

Просто используйте $timeout для вызова обратного вызова вставки после обновления модели.

$scope.getContent = function(a){
   $timeout(function () {console.log(a.content)});
}
person Colm Seale    schedule 07.12.2017