angularjs – 无法在Angular 1.x中观察$dirty(或$pristine)值
发布时间:2020-12-17 17:16:47 所属栏目:安全 来源:网络整理
导读:我在Angular 1.x项目中有一个场景,我需要在指令中查看控制器表单,以执行表单$dirty check.一旦页面上的表单变脏,我需要在注入的服务中设置一个标志. 这是一般指令代码: var directiveObject = { restrict: 'A',require: '^form',link: linkerFn,scope: { ng
我在Angular 1.x项目中有一个场景,我需要在指令中查看控制器表单,以执行表单$dirty check.一旦页面上的表单变脏,我需要在注入的服务中设置一个标志.
这是一般指令代码: var directiveObject = { restrict: 'A',require: '^form',link: linkerFn,scope: { ngConfirm: '&unsavedCallback' } }; return directiveObject; function linkerFn(scope,element,attrs,formCtrl) { ... scope.$watch('formCtrl.$dirty',function(oldVal,newVal) { console.log('form property is being watched'); },true); ... } 以上只是在初始化期间进入手表,所以我尝试了其他方法,结果相同: 观察范围.$parent [formName].$dirty(在这种情况下,我在attrs中传递formName并将其设置为本地var formName = attrs.formName) 看element.controller()[formName](与上面相同的结果) 我查看了有关该问题的其他SO帖子,并尝试了列出的解决方案.它似乎应该工作,但不知何故,表单引用(表单属性引用)超出了指令范围,因此没有被监视. 任何意见,将不胜感激. 解决方法
我不知道为什么那个表不起作用,但作为传递整个表单的替代方法,你可以简单地将$dirty标志传递给指令.那是:
.directive('formWatcher',function() { restrict: 'A',scope: { ngConfirm: '&unsavedCallback',// <-- not sure what you're doing with this isDirty: '=' },link: function(scope,attrs) { scope.watch('isDirty',function(newValue,oldValue) { console.log('was: ',oldValue); console.log('is: ',newValue); }); } }) 使用指令: <form name="theForm" form-watcher is-dirty="theForm.$dirty"> [...] </form> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在gVIM中不能多次使用宏
- Memcached source code analysis -- Analysis of change of
- twitter-bootstrap – 将Twitter Bootstrap Uncloseable Mo
- Bootstrap css在navbar navbar-fixed-top下面隐藏容器部分
- Angular 2 e2e使用量角器:by.model不工作
- angularjs – angular.js指令在不同的模块
- 【数据结构】并查集
- 【图书】Ionic实战:基于AngularJS的移动混合应用开发
- scala:为什么下划线(_)初始化对于字段而不是方法变量?
- shell编程