【发布时间】:2015-11-10 11:12:40
【问题描述】:
我正在写这篇文章,希望了解如何在从浏览器扩展执行自动完成时触发 angularJS 来更新其模型。我知道其他一些应用(LastPass 等密码管理器)成功地做到了这一点。
我正在构建一个小的 Safari 扩展,它将帮助我自动完成 Apple 的(可笑的)沙盒用户创建表单,它有 10 个输入字段和几个选择器元素。
到目前为止,我已经设法使用 jQuery 获取输入字段并使用 .val() 设置它们的值。但是,这并不会触发 angularJS 更新其模型,所以即使输入字段中有文本,angular 也会认为没有文本,无法验证表单。
如果我可以访问 angular 对象,问题可能会很容易解决,但我似乎无法做到这一点。当我尝试访问angular 时,我注入的脚本返回undefined。所以我想我要么错误地检索了角度对象,要么我应该以不同的方式解决这个问题。
请注意,我已经尝试过网络上提到的其他一些技巧:input.trigger('input'); 和其他类似的东西。
【问题讨论】:
-
你设置了 ng-model 字段吗?
-
@Jacques 在一个元素上?我正在使用其他人制作的表格,我没有创建自己的表格...
-
@Andrei 我有点困惑。如果不控制表单,为什么还要担心表单发生变化时对模型进行角度更新?你无法控制其他人的表单做什么,或者他们使用什么技术。表单的开发者应该确保检查自动完成。
-
@Jacques 是的,但是因为他们没有更新他们的表单,所以即使每个元素中的值都正确,它也不会验证。它会认为所有字段都是空的,即使它们里面有值。如果我在该字段中手动输入内容,则该表单验证良好。我知道可以绕过这个“错误”,因为其他扩展(例如 Last Pass)成功更新了字段,并且模型似乎已正确更新,因为表单没有抱怨有空字段
标签: javascript jquery angularjs autocomplete safari-extension