angularjs ng-paste不会更新模型值

9 浏览
0 Comments

angularjs ng-paste不会更新模型值

我在文本区域中使用了ng-paste,当在文本区域中粘贴链接时,我调用了一个自定义函数来存储该值。请参考下面的代码:


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

但是在控制台中,我总是得到undefined的值。我该如何获取我的对象值?

0
0 Comments

问题原因:

问题出现的原因是ng-paste事件无法直接更新模型的值。ng-paste事件本身不会更新ng-model绑定的值,只是提供了获取用户粘贴内容的机会。

解决方法:

要解决这个问题,可以使用ng-change或者$watch来监测模型的变化。如果想要获取用户粘贴的内容,可以使用ng-paste事件,并通过$event.originalEvent来获取实际的事件对象。

具体解决方法如下所示:

在HTML模板中添加ng-paste事件,同时传递$event.originalEvent作为参数:


在控制器中编写paste函数,通过event.clipboardData.items[0]来获取粘贴的内容:

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

以上就是解决angularjs ng-paste不更新模型值的方法。

相关代码示例可以在这个plunker中查看:http://plnkr.co/edit/ea5y5j

0
0 Comments

问题的原因是ng-paste指令在粘贴内容到输入框时并不会立即更新模型的值。解决方法是使用$timeout延迟调用粘贴回调函数,以确保在模型更新后再调用。具体代码如下:

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

0