首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我更改了$provide.decorator中的输入值时,为什么我的角度表单不是脏的?

当你更改了$provide.decorator中的输入值时,角度表单不会被标记为脏的原因是因为$provide.decorator是AngularJS中的一个服务,用于修改或扩展已注册的服务。它的作用是在服务实例化之前对服务进行修改。

在AngularJS中,表单的脏检测是通过监视表单元素的输入值是否发生变化来实现的。当表单元素的输入值发生变化时,AngularJS会将表单标记为脏,从而触发相应的脏检测操作。

然而,$provide.decorator修改的是服务本身,而不是表单元素的输入值。因此,即使你更改了$provide.decorator中的输入值,表单元素的输入值并没有发生变化,所以表单不会被标记为脏。

要使角度表单标记为脏,你需要手动更新表单元素的输入值。你可以通过在控制器中使用$scope.$apply()方法来实现这一点。$scope.$apply()方法会触发AngularJS的脏检测机制,使表单元素的输入值被更新并标记为脏。

以下是一个示例代码:

代码语言:javascript
复制
app.controller('MyController', function($scope) {
  // 在$provide.decorator中更改输入值
  $provide.decorator('myService', function($delegate) {
    $delegate.inputValue = '新的输入值';
    return $delegate;
  });

  // 手动更新表单元素的输入值
  $scope.updateInputValue = function() {
    $scope.myForm.input.$setViewValue('新的输入值');
    $scope.myForm.input.$render();
  };

  // 监听表单元素的输入值变化
  $scope.$watch('myForm.input.$modelValue', function(newValue, oldValue) {
    if (newValue !== oldValue) {
      $scope.myForm.$setDirty();
    }
  });
});

在上面的示例中,我们通过手动更新表单元素的输入值,并在输入值发生变化时将表单标记为脏。这样,即使你更改了$provide.decorator中的输入值,表单也会被正确地标记为脏。

请注意,以上示例中的代码仅为演示目的,并未提及任何腾讯云相关产品。如需了解腾讯云相关产品和产品介绍,请访问腾讯云官方网站。

相关搜索:为什么当我输入END时我的程序不会终止?角度表单:在自动完成选择时,定义与输入值不同的表单控制值仅当我更改表单中的值时,才能从表单中获取这些值为什么当我改变伽马角度时,我的旋转矩阵不工作?为什么我的文本输入布局在按下时不是正确的颜色?当我输入矩阵时,为什么我的Javascript高斯消除程序不工作?当我运行这个函数时,为什么我的用户输入没有被调用?为什么我的变量不是从用户输入中存储的?JAVA当我添加long类型的输入文本时,为什么我的按钮不起作用我正在使用动态表单从表单中检索值,但是当我通过控制台记录从表单中的值创建的对象时,我得到了未定义的值为什么我更喜欢元类而不是继承Python中的超类当我设置表单输入文件的样式时-当使用提交按钮时,我无法将其上传当我在获取输入类型的函数旁边输入{}时,为什么我得不到定义当我在终端中输入MongoDB时,我的mongod无法工作当我禁用提交按钮以防止双击时,为什么我的表单没有发布?当我没有调用is_valid时,为什么我的django表单要进行验证当我尝试访问网页上的表单提交时,我的JavaScript querySelector返回空值为什么我的redux表单中没有显示该值?当我在React中向输入标记写入文本时,为什么我的文本没有更改为什么当我使用"is“而不是"==”时,np.all会返回错误的值?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

从单向到双向数据绑定

脏值检测(代表:angular1) 前面说的定时器双绑是扯淡 前面特地埋了个坑,关于Angular脏检查,并不是一些人想象的那样子用定时器周期性进行脏检测(我前面写的那个超级简单的双绑就是人们传闻的angular...而我们前面的vue,当我们在控制台改了数据,就可以马上反映到v层。angular并没有这个操作,也没有意义。...因为双绑的M->V一般就是基于ui行为、定时器、ajax这些异步动作,所以这就知道为什么ng-model只能对表单有效了。...watch方法来添加的,每一个被绑定的对象属性是:变量名、变量旧值、一个函数(用来返回变量新值)、检测变化的回调函数。 对于为什么使用一个函数来记录新值(类似vue的computed)?...(){} //监听回调函数,变量“脏”时触发 }) } Scope.prototype.

3.6K20

从单向到双向数据绑定0.前言1.单向数据(代表:react)2.观察者模式3.双绑的中间枢纽——Object.defineproperty(代表:vue)4. 脏值检测(代表:angular1)前面说

脏值检测(代表:angular1) 前面说的定时器双绑是扯淡 前面特地埋了个坑,关于Angular脏检查,并不是一些人想象的那样子用定时器周期性进行脏检测(我前面写的那个超级简单的双绑就是人们传闻的angular...而我们前面的vue,当我们在控制台改了数据,就可以马上反映到v层。angular并没有这个操作,也没有意义。...因为双绑的M->V一般就是基于ui行为、定时器、ajax这些异步动作,所以这就知道为什么ng-model只能对表单有效了。...对于为什么使用一个函数来记录新值(类似vue的computed)?这样子可以每次调用都得到数据上最新的值,如果把这个值写死,不就是不会变化了吗?这是监控函数的一般形式:从作用域获取值再返回。...(){} //监听回调函数,变量“脏”时触发 }) } Scope.prototype.

1.6K40
  • 再谈angularJS数据绑定机制及背后原理—angularJS常见问题总结

    ng-model 是双向数据绑定($scope -> view and view -> $scope),用于绑定值会变化的表单元素等。 双向数据绑定是 AngularJS 的核心机制之一。...实际上, 脏检查是digest执行的,另一个更常用的用于触发脏检查的函数apply——其实就是 $digest 的一个简单封装(还做了一些抓异常的工作)。...newValue, oldValue) {     if (newValue === oldValue) { return; }     $scope.updated++; }, true); 表示比较的是对象的值而不是引用...所以说不要怀疑用户在输入表单时 angular 会不会监听页面左边导航栏的变化。 如何优化脏检查与运行效率 脏检查慢吗? 说实话脏检查效率是不高,但是也谈不上有多慢。简单的数字或字符串比较能有多慢呢?...ng-click中写的表达式,能使用JS原生对象上的方法,比如Math.max之类的吗?为什么? 不可以。

    7.9K40

    MIT 6.824 -- Cache Consistency -- 11

    ,但是站在目前的角度来看,其更符合适用于小型团体的NFS(网络文件系统)实现。...在这里我们想要的是线性一致性和缓存带来的好处。对于线性一致性来说,当我查看文件系统中任何内容时,我总是能看到最新的数据。对于缓存来说,我们想要缓存带来的性能提升。...所以,如果我创建了一个新文件,create函数返回时,这些新文件的锁仍然被当前客户端持有。只是说现在锁的状态会变成Idle而不是Busy。但是从锁服务器看来,当前客户端仍然持有锁。...因为没有人持有了这个文件的缓存,所以就算文件被修改了,也没有人会读到旧的数据。 最后再提一下脏数据写回时机,客户端每隔30秒会将所有修改了的缓存写回到Petal中。...锁服务器要我释放锁,我的客户端会先向Petal写入Log,之后再向Petal写入脏的块数据,最后才向锁服务器发送Release消息。 之后,其他的客户端才能获取锁,并读取相应的数据块。

    17010

    建模与表单的动态化设计

    当我们尝试去动态化建模时,就不得不考虑这些问题。 元数据 我们的模型是由字段组成的,但是字段并不是最小单位。...字段的存储性质可以理解为如果我们要把该字段存储在数据库中所需要的属性,当我们在使用 create table 语句时,我们就会规定字段的存储性质,例如字段的数据类型、默认值、长度、名称文本、字段解释(含义...这些属性虽然不是最重要的,但是在系统中是最好实施的,最容易看见成果的,因此我是比较推荐先从这个部分的动态化实施,慢慢扩展和研究全部的动态化。...因为从用户的角度讲,他们更关心看得见摸得着的表单,而不是相对来说更底层的实体模型。...当用户在创建一个可输入的输入框或类似的组件节点时,我们需要将该节点与对应的字段予以绑定,而在这个过程中,就需要用户自己去填写字段的信息,同时把创建好的字段放到数据库中。

    2.6K12

    MVCC 水略深,但是弄懂了真的好爽!

    ,如图1-2: 注意,如果只是修改了当前 session 的隔离级别,则换一个 session 之后,隔离级别又会恢复到默认的隔离级别,所以我们测试时,修改当前 session 的隔离级别即可。...当我们要添加一条记录的时候,就把添加的数据 id 记录到 undo log 中,将来回滚的时候就据此把数据删除;当我们要删除或者修改数据的时候,就把原数据记录到 undo log 中,将来据此恢复数据。...如果这个值小于数组中的最小值,说明当我们开启当前事务的时候,这行数据修改所涉及到的事务已经提交了,当前数据行是可见的。...如果这个值大于数组中的最大值,说明这行数据是我们在开启事务之后,还没有提交的时候,有另外一个会话也开启了事务,并且修改了这行数据,那么此时这行数据就是不可见的。...另外还有一个需要注意的地方,就是如果当前事务中涉及到数据的更新操作,那么更新操作是在当前读的基础上更新的,而不是快照读的基础上更新的,如果是后者则有可能导致数据丢失。

    34320

    Angularjs1.X进阶笔记(1)—两种不同的双向数据绑定

    1.1数据从html流向controller 也就是从视图层流向模型层,原生html中需要使用表单元素(例如input标签)来收集用户输入信息,Angularjs中通过在表单元素上使用ng-model标签...,当用户输入信息时,同步将用户输入的信息赋值给controller中的变量: 当我们点击show $scope.testInfo时,控制台打印出了$scope.testInfo.content的值为5,这下证据坐实了,明明说好的双向数据绑定,然而当自定义指令中的scope.pagination...官方建议使用$watch方法来追踪scope中的变量,而当我们这样做时,会发现$watch函数仅能追踪到那些通过修改controller中的数据模型而影响link函数中变量的行为并更新视图。...我们可以回顾一下上面在使用双向数据绑定发生异常时的场景: 使用了原生的定时器(Angular中你应该使用$interval,$timeout服务) 用类原生方法(bind)为元素添加事件监听器,并在回调函数中修改了变量的值

    3.5K20

    HTML注入综合指南

    “提交”按钮时,新的登录表单已显示在网页上方。...因此,此登录表单现在已存储到应用程序的Web服务器中,每当受害者访问此恶意登录页面时,该服务器都会呈现该登录表单,他将始终拥有该表单,对他而言看起来很正式。...* 从下图可以看到,当我尝试在**name字段中**执行HTML代码时,它会以纯文本的形式将其放回: [图片] 那么,该漏洞是否已在此处修补?...** [图片] 在“ Repeater”选项卡中,当我单击**“ Go”**按钮以检查生成的**响应时,**我发现我的HTML实体已在此处**解码**为**HTML**: [图片] 因此,我处理了完整的...此外,他用“ HTTP_HOST”修改了主机名,并用“ REQUEST_URI”修改了URL的请求资源位置,并将其全部放在**$ url**变量中。

    3.9K52

    Linux||环境变量

    .bashrc 系统配置文件,包含专用于你的bash shell的bash信息、设置,每次登录或打开新的shell时,该文件会被自动读取和执行。如果修改了该文件,需要source(类似于重启电脑)。...$PATH which ls 我们知道ls命令的完整路径为/bin/ls,那么为什么我可以在任何地方直接输入ls去执行命令,而不是提示找不到该命令呢? 这就不得不提到环境变量PATH。...输入ls命令时,系统会按照PATH的设置去每个PATH的定义的路径中查找ls的可执行文件,如果PATH定义的路径中有多个ls的可执行文件,则执行先查找到的同名命令。...我们再回过头来看一下:安装conda的最后一步时,有一个需要输入yes/no的操作,当我们输入yes以后,.bashrc文件中多出了这么一段代码,export PATH="/home/zwang/anaconda3...当我们运行不同的项目时,往往会由于不同软件依赖条件和环境不同而通过[conda create -n 环境名]去创建不同的小环境。 举个例子,我在名为rna的小环境下通过conda安装了fastqc。

    8.8K10

    vue高频面试题合集(二)附答案

    这七种,只要这些方法执行改了数组内容,我就更新内容就好了,是不是很好理解。....lazy 通过这个修饰符,转变为在 change 事件再同步.number 自动将用户的输入值转化为数值类型.trim 自动过滤用户输入的首尾空格键盘事件的修饰符.enter.tab.delete (...的缓存特性,避免每次获取值时,都要重新计算;当我们需要在数据变化时执行异步或开销较大的操作时,应该使用 watch,使用 watch 选项允许我们执行异步操作 ( 访问一个 API ),限制我们执行该操作的频率...diff 算法的过程中,先会进行新旧节点的首尾交叉对比,当无法匹配的时候会用新节点的 key 与旧节点进行比对,从而找到相应旧节点.更准确 : 因为带 key 就不是就地复用了,在 sameNode 函数...key 是为 Vue 中 vnode 的唯一标记,通过这个 key,我们的 diff 操作可以更准确、更快速更准确:因为带 key 就不是就地复用了,在 sameNode 函数 a.key === b.key

    1K30

    关于 v-model 你需要知道的这一切!

    在v-model的情况下,它告诉Vue我们想要在template 中的值和data属性中的值之间创建一个双向数据绑定。 使用v-model的一个常见用例是在设计表单相关的一些元素时。...input中输入内容时,我们会看到我们的数据属性正在变化 !...当我们想在自己的应用中创建一个清晰的单向数据流时,这是非常有用的。但是,在v-model和v-bind之间选择时必须小心。...然而,当我们创建自定义组件并处理更复杂的数据时,我们可以释放v-model的真正威力。 ~完,我是刷碗智,我要去刷碗了,我们下期见!...终身学习者 我要先坚持分享20年,大家来一起见证吧。 关注专栏 ? 前端小智 前端开发工程师 我不是什么大牛,我其实想做的就是一个传播者。

    1.1K30

    深入浅出 Vue 中的 key 值

    从前篇文章说起 前几天我写了一篇文章,sortable.js——Vue 数据更新问题 ,当时自己只是从数据的强制刷新角度去分析,而且并没找到真正的“元凶”。...key 的一个错误使用——使用 index 作为 key 不知道你在写 v-for 的时候,会不会直接使用 index 作为它的 key 值,是的,我承认我会,不得不说,这真的不是一个好习惯。...接着我改了绑定的 key 值,因为这里的例子比较特殊,我们就认为 item 的值都不相同 的模式是高效的,但是只适用于不依赖子组件状态或临时 DOM 状态 (例如:表单输入值) 的列表渲染输出。 我们来看带上 key 之后的效果 ?...参考 第 1 题:写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么?

    1.1K10

    虚拟DOM已死?|TW洞见

    探讨了如何在前端开发中编写可复用的界面元素。本篇文章将从性能和算法的角度比较 Binding.scala 和其他框架的渲染机制。...你可能用过一些其他 Web 框架,大多使用脏检查或者虚拟 DOM 机制。和它们相比,Binding.scala 的精确数据绑定机制使用更简单、代码更健壮、性能更高。...比如,你想要在某个 列表的顶部插入一项 ,那么 ReactJS 框架会误以为你修改了 的每一项 ,然后在尾部插入了一个 。...注意,status 并不是一个普通的函数,而是描述变量之间关系的特殊表达式,每次渲染时只执行其中一部分代码。比如,当 count 改变时,只有位于 count.bind 以后的代码才会重新计算。...我将在下一篇文章中介绍 Binding.scala 如何在渲染 HTML 时静态检查语法错误和语义错误,从而避免 bug 。

    6K50

    AngularJS 1 教程

    toc 为什么需要前端框架 为什么2016年的今天仍然可以学习Angular 1 和jQuery 的不同 学习AngularJS 1 作用域、数据双向绑定、模块 Angualr 1实现双向绑定的脏检查...从使用角度来说脏检查 从性能角度来说脏检查 指令 directive,以及用指令写组件 Promise 为什么需要前端框架 随着浏览器性能提升,更多Web Page演变为Web App,特别是在中大型的项目中...: 数据双向绑定 ,model中数据变化了view中就会自动改变,而相应的view中(表单)变化了,也会自动同步到model。...脏检查字面理解就是循环对比前后值,如果不相同说明就是“脏”的然后执行相应的操作,直到所有值相同,或者超出循环次数范围 如果说scope是入门的核心,那么Angualr脏检查就是入门到精通的核心。...从性能角度来说脏检查 上面例子说明了AngularJS脏检查的特性,手动触发,全局检查。 每次循环都要全部遍历一边$$watchers的值,而且如果被检测的值相互有依赖,还要循环多次。

    4.6K30

    【Java框架型项目从入门到装逼】第十一节 用户新增之把数据传递到后台

    让我们继续来做“主线任务”,这一节,我们来做具体的用户新增功能。首先,为了简单起见,我把主页面改了一些,改的是列表那一块。...删去了一些字段,和数据库表对应一致: 现在,我们要实现一个效果,就是当我点击新增用户的按钮时,就弹出一个框来。因为我们使用的是EasyUI组件,所以我们可以用dialog组件来完成那个弹窗界面。...; return; } } 这个saveUser函数中,首先是用jQuery去获取每个文本框或者下拉框的值,然后依次判断是否为空,如果为空,就给出对应的提示...username; json.password = password; json.name = name; json.sex = sex; console.log(json); 效果: 这样一来,我们是不是可以拿到表单数据啦...~~"); } } 让我们启动Tomcat服务器,然后打开浏览器,在地址栏输入: http://localhost/student/addUser.do 为什么是.do呢?

    1.5K51

    react20道高频面试题答案总结

    从使用者的角度而言,很难从使用体验上区分两者,而且在现代浏览器中,闭包和类的性能只在极端场景下才会有明显的差别。所以,基本可认为两者作为组件是完全一致的。...在 React中,组件负责控制和管理自己的状态。如果将HTML中的表单元素( input、 select、 textarea等)添加到组件中,当用户与表单发生交互时,就涉及表单数据存储问题。...如下所示, username没有存储在DOM元素内,而是存储在组件的状态中。每次要更新 username时,就要调用 setState更新状态;每次要获取 username的值,就要获取组件状态值。...表单如何呈现由表单元素自身决定。如下所示,表单的值并没有存储在组件的状态中,而是存储在表单元素中,当要修改表单数据时,直接输入表单即可。有时也可以获取元素,再手动修改它的值。...当要获取表单数据时,要首先获取表单元素,然后通过表单元素获取元素的值。注意:为了方便在组件中获取表单元素,通常为元素设置ref属性,在组件内部通过refs属性获取对应的DOM元素。

    3.1K10

    《代码整洁之道》读书小结

    而这一次,因为一些临时性的需求变更,我自认为我写了一部分脏代码,这部分代码恰恰是bug的高发地段,而且也可能会带来后期维护的困难。那么如何来重构这部分代码呢?...在我写下这部分脏代码之前,我自认为也是用了一些能够用上的设计模式,但是随着临时性的需求变更不断增加,有时候贪图省事直接在原有代码的基础上修改了事,很明显这违反了开放闭合原则。...第一次看这本书是在几年前,可以说这本书对我编写代码的风格形成了很深的影响,而初读此书时也有种醍醐灌顶的感觉,哦,原来代码还可以这么写。...从命名谈起 当我们在写代码时,面临的第一个问题大概就是命名,你想创建一个类,需要命名;写函数,需要命名;甚至初始化一个变量,也需要给变量命名。但是一个好的命名和差的命名,可是有着天差地别的区别的。...其实每次我去反思这点的时候,我觉得可有意思了,讲道理的说,我有可能做不到,为什么呢,因为水平不够,对语言的理解不够透彻,有很多更深层的语言特性,还不能熟练应用。

    64230

    多个buffer Pool实例 (3)—Buffer Pool(五十六)

    LRU链表管理(2)—Buffer Pool(五十五) 刷新脏页到磁盘 前面说了每隔一段时间,会把修改了缓存页的脏数据,刷新到磁盘上,主要有两个刷新路径: 从冷数据刷新一部分到磁盘(BUF_FLUSH_LRU...从flush链表中刷新一部分到磁盘(BUF_FLUSH_LIST):刷新的速率取决于系统是不是很繁忙。...当然有时候系统特别忙的时候,用户大量访问时,也会出现用户线程批量从flush链表持久化脏数据,磁盘的I/O操作慢的要死,显然这是迫不得已的行为,后面redo日志的checkpoint时说。...,每次当我们重新调整buffer pool的值时候 ,都要重新向系统申请一块连续的内存空间,然后再将旧的数据拷贝到新的内存中(有木有类似java的数组),很显然这是极其耗时的。...还不是因为如果改了,前面数据存储的大小和新的就不一样,这样还是得把前面的数据copy到新的chunk,这样设置chunk的意义就不存在。)

    48410

    浅谈 Angular 项目实战

    为什么使用 Angular 我不是 Angular 的布道者,但如今自称 Angular 派,使用 Angular 做项目让我有一种兴奋感。...在经过很长时间的学习及准备之后,终于在今年有了项目实战的机会,项目很小,是整个系统中的一个独立模块,但是几乎所有知识都有涉猎,可谓“麻雀虽小五脏俱全”。本文就是对该项目的一些总结及思考。...通过 Angular 的响应式表单可以很容易实现。但是对于模板驱动表单也可以用另类的方式实现,比如手动实现一个双向数据绑定,虽然有点麻烦,但却是可行的。关于这个话题我放到下一篇文章中说明。...官方文档中关于表单的内容非常详细,从用户输入到绑定再到校验,比着葫芦画瓢就可以轻松实现双向数据绑定。...需要特别注意的就是,只有当订阅 Observable 的实例时,它才会开始发布值。 订阅时要先调用该实例的 subscribe() 方法,并把一个观察者对象传给它,用来接收通知。

    4.6K00
    领券