用户脚本:更改AngularJS ng-model

时间:2019-01-04 06:34:25

标签: javascript angularjs userscripts

我正在编写一个脚本来简化工作。我有一个文本区域,我以编程方式粘贴了一些数据(el.value = ""),想发布/提交它,但是我无法这样做,因为ng-pristineng-empty阻止了我办法。有什么解决办法吗?

我用于“粘贴”数据的代码如下:

function transfer(){
        var fromV = document.getElementById('DataToCopy').value;
        var toV1 = document.getElementById('TextareaToPasteTo1');
        var toV2 = document.getElementById('TextareaToPasteTo2');
        var foc = document.querySelector('TextareaToPasteTo');
        foc.focus();
        toV1.value += "transferring to: " + fromV;
        toV2.value += "transferring to: " + fromV;
};

3 个答案:

答案 0 :(得分:0)

我认为您应该使用markAsDirty方法,如下所示:

control.markAsDirty();

这还会将所有直接祖先标记为肮脏,以维护模型。

https://angular.io/api/forms/AbstractControl#!#markAsDirty-anchor

答案 1 :(得分:0)

为什么不在transfer方法中清除所有类,除非它会影响UI ?

document.getElementsByName('whatever')[0].classList = [];

这将删除所有ng-valid, ng-invalid, ng-dirty, ng-pristine, ng-touched, ng-untouched, ng-empty, ng-not-empty类(如果有)以及其他类。

如果它影响您的用户界面,则可以手动添加所需的类

document.getElementsByName('whatever')[0].classList = ['some-class', 'some-other-class'];

答案 2 :(得分:0)

好吧,我设法找到了解决方案。使用.classList = [];会更改客户端的类,但是我需要将textarea中确实存在一些文本的信息推送到服务器,所以我触发了一个事件,它起作用了! angular.element(jQuery('#activity-stream-textarea')).triggerHandler('input')