gpt4 book ai didi

javascript - 暗影 v8 : custom script call model change

转载 作者:行者123 更新时间:2023-12-01 16:25:42 24 4
gpt4 key购买 nike

我有一个 Umbraco 插件,它实际上是一个 vanilla .js 文件,它允许我从服务中检索一些 JSON,然后它填充当前页面上的一些字段,例如:

var setTxt = function(id, val) {
var txt = document.getElementById(id);
if (txt && val != null && val != undefined) {
return txt.value = val;
};
};

但是,当我点击保存时, Angular 模型不会保存对输入的任何更改 - 可能是因为没有触发更改检测。

我已经尝试过例如使用“发布者”字段:

angular.element(document.querySelector("#publisher")).scope().apply()

但是我得到了错误:

VM94421:95 TypeError: Cannot read property 'apply' of undefined

我真的不想陷入 Angular 1,我的 vanilla js 一切正常,我只需要让 umbraco 获取我在各种 Angular 上设置的所有值字段。

问)我如何强制执行此操作?

附注- 请不要评论这是不好的做法,我只需要完成这项工作。

最佳答案

通过提问者编辑:结果是 jQuery Lite 已经包含在内,您可以调用:

$('#' + id).trigger('input');

下面的原始答案也有效:

你应该触发“input”事件让angular知道你的改变:

var setTxt = function(id, val) {
var txt = document.getElementById(id);
if (txt && val != null && val != undefined) {
txt.value = val;
raiseEvent(txt, 'input');

return val;
};
};

var raiseEvent = function(el, eventType) {
var event = document.createEvent('Event');
event.initEvent(eventType, true, true);
el.dispatchEvent(event);
};

顺便说一句,$scope 没有“应用”功能。它的名字是“$apply”。据我所知,“scope.$appy(cb)”将获取应用于范围变量的更改,在您的情况下,您直接使用 dom 元素进行操作。

关于javascript - 暗影 v8 : custom script call model change,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62052486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com