您可以记录角度数据绑定错误吗?

2023-11-25

如果绑定属性或表达式失败,是否有办法记录?

i.e.

<input type="text" ng-model="user.name" />

当用户或名称未定义时记录?

Edit:对于如何发生这种情况似乎存在很多困惑。假设我对多个视图使用视图模型(或者我很健忘)

想象一下,我更改了 JS 代码,以便名称现在为 user.firstName,但我忘记更新我的视图。我希望在运行时记录它,以便我可以修复它。


正如其他人在评论中提到的,当属性未在范围中定义时,数据绑定本身不会“失败”,但会在范围上透明地创建该属性。

如果您希望在未找到名称时有一些通知行为,您可以通过装饰 ng-model 指令来手动获取它,以检查其值在插入 DOM 时是否在作用域上定义。

.config(['$provide', function($provide) {
        $provide.decorator('ngModelDirective', ['$delegate', function($delegate){
            var directive = $delegate[0];

            // Save the old link function
            var link = directive.link;
            directive.compile = function() {
                return function(scope, element, attrs) {
                    link.apply(this, arguments);

                    // Now that we've applied the old link function, we can add
                    // any extra checks or steps we want
                    if (!objHasProperty(scope, attrs.ngModel)) {
                        alert("using ng-model value '" + attrs.ngModel +"' that wasn't defined first!"
                    }
                };
            };

            return $delegate;
        }]);
    }])

这将检查控制器范围内 ng-model 值的定义,如果未设置则发出警报。

看一个工作jsfiddle这可能会如何记录拼写错误。

我还没有在每个场景中对此进行测试或考虑过,所以它可能真的在某个地方被破坏了......我也不确定它将如何处理查找在父级范围中定义的属性。

另请参阅这篇不错的博文有关装饰指令的更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您可以记录角度数据绑定错误吗? 的相关文章

随机推荐

  • 在 VsCode 中激活 Anaconda 环境

    我的系统上有 Anaconda VsCode 也在工作 但是如何让 VsCode 在运行 python 脚本时激活特定环境 只需使用 cmd shift P ctrl shift P for MS Windows Search 选择口译员
  • 使用强化学习解决分类问题[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我可以在分类上使用强化学习吗 比如人类活动识别 如何 反馈有两种类型 一是评价性的用于强化学习方法 第二个是有指导意义的用于监督学习 主要用于分类问题 当使用监督学习时 神经网络的权
  • 有没有办法在seaborn点图中设置透明度/alpha级别?

    我想制作一个具有透明度的seaborn点图 以便我可以清楚地看到位于其他不同颜色后面的点 我尝试将 alpha 0 3 添加到对 pointplot 的调用中 并在带有 kind point 的 catplot 中尝试了相同的操作 然而 这
  • 为什么嵌套迭代器闭包不会从外部作用域复制值

    我正在尝试使用嵌套迭代器 其中内部迭代器使用外部迭代器的值 vec 0 10 iter flat map a 0 10 map b a b error a活得不够长 0 10 map b 注意 引用必须对方法调用有效 如果我移动内部闭包 m
  • JQuery Datepicker 不会使用英国日期字符串发布

    如果问题很明显 我深表歉意 但我不明白为什么它突然不起作用 我有一个jquery日期选择器 从我记事起它就一直工作正常 但是突然间 当我尝试提交表单时 日期选择器上的日期选择器重新出现 就好像我提交的日期无效一样 我已经使用以下代码行将日期
  • 自动刷新 IFrame HTML

    如何每 3 秒自动刷新一次 Iframe 而不刷新整个页面 我用但它会显示整个页面刷新 并且每次都会将您带到页面顶部 我的 Iframe 指向一个文本文件来读取我放入的实时消息 有没有一种方法可以做到这一点 而无需刷新整个页面 仅刷新元素
  • 参考:使用 MySQL 扩展的完美代码示例是什么? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 这是为了创建一个社区学习资源 我们的目标是提供良好的代码示例 这些代码不会重复复制 粘贴
  • Java继承

    因此 我一直在尝试找到正确的方法来让应该非常简单的继承发挥作用 按照我想要的方式 但我惨败了 考虑一下 class Parent public String name Parent public Parent public void doS
  • ASP.Net Identity 和 IdentityServer4 声明

    我使用 IdentityServer4 作为 OIDC 提供程序和 ASP NET Core 2 0 我已经阅读了几篇文章 以确保 IdentityServer 发出的声明最终出现在 ClaimsPrincipal 即 Auth Cooki
  • 如何查找数组中出现次数最多的项目[重复]

    这个问题在这里已经有答案了 如何找到数组中出现次数最多的项 1 1 1 2 3 mode gt 1 cat dog snake dog mode gt dog 首先构建一个哈希 将数组中的每个值映射到其频率 arr 1 1 1 2 3 fr
  • PyDev 和 Eclipse 未解决的导入问题

    尽管我已经多次使用 Eclipse for Java 但我对 PyDev 和 Python 还很陌生 我正在尝试解决一些 Dive Into Python 示例 这感觉像是一个极其微不足道的问题 但现在却变得非常烦人 我使用的是 Ubunt
  • 使用 method_add 动态覆盖实例方法了解 ruby​​ 元编程

    我有以下来自 Programming Ruby 1 9 的代码 稍作修改 我只是想确保我的思维过程是准确的 module Trace def self included culprit Inject existing methods wit
  • (276/304)*304 的小数舍入关闭

    如果将以下代码放入编译器中 结果会有点奇怪 decimal x 276 304 304 double y 276 304 304 Console WriteLine decimal x x Console WriteLine double
  • Apache 应该服务什么,Tomcat 应该服务什么?

    我正在尝试在 Tomcat 之前设置 Apache Apache 提供什么服务 我知道 Apache 对于静态页面和图像效果更好 我目前在 Tomcat 中部署了一个 war 文件 其中包含静态页面 图像和 Flash 文件 我应该把这些都
  • ASP.NET 托管环境/shadowCopyBinAssemblies

    今天我偶然发现了ShadowCopyBinAssemblies选项中的托管环境 tag 显然这个属性是网络配置 system web 配置布尔选项 指示 Bin 目录中应用程序的程序集是否卷影复制到应用程序的 ASP NET 临时文件目录
  • 未添加本机代码的 Java 致命错误 SIGSEGV

    我从 Java 编译器收到一条我不理解的错误消息 我已经使用 Java 6 和 7 在 OSX 10 6 10 9 和 Ubuntu 14 04 上测试了我的代码 当我使用 Eclipse 调试器或解释器 使用 Xint 选项 运行时 一切
  • Django 无法迁移 PostgreSQL:关系 Y 的约束 X 不存在

    我正在尝试在 PostgreSQL 9 6 5 数据库上运行 Django 1 11 迁移 但出现了奇怪的错误 Applying myapp 0011 auto 20171130 1807 Traceback most recent cal
  • sqlalchemy中的连接池是线程安全的吗?

    文档称连接池也不是为多线程设计的 至关重要的是 当使用连接池时 以及扩展时 使用通过 create engine 创建的引擎 连接不会与分叉进程共享 TCP 连接是 表示为文件描述符 通常跨进程工作 边界 这意味着这将导致对文件的并发访问
  • iPhone 应用程序无法在旧设备(3G、3GS...)上运行[重复]

    这个问题在这里已经有答案了 可能的重复 使用 Xcode 4 2 和 iOS 5 SDK 时是否可以针对旧版 iOS 版本 我开发了一个适用于 iPhone 4 iOS 4 3 和 5 的应用程序 在开发过程中使用 现在我尝试在3GS iO
  • 您可以记录角度数据绑定错误吗?

    如果绑定属性或表达式失败 是否有办法记录 i e