如何在 Angular Js 的类上编写指令? [英] How to write directive on class in Angular Js?

查看:16
本文介绍了如何在 Angular Js 的类上编写指令?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限制选项通常设置为:

'A' - 只匹配属性名称
'E' - 只匹配元素名称
'C' - 只匹配类名
'M' - 只匹配评论

'C' - 只匹配类名不起作用

Class="form-control **valid-vehicleyear** ng-not-empty ng-dirty ng-valid-parse ng-valid ng-valid-required ng-touched"

我在与元素关联的类上创建了一个指令.在更改值时,我想调用 api 并更改其他元素的值.但没有观察到变化.

controlDirective.js

 function validVehicleyear($scope, $http) {返回 {限制:'C',范围: {ngModel: '=',},链接:函数(范围、元素、属性、ngModel){element.bind('change', function () {console.log('这里在 validVehicleyear');$http.get('api.php'+scope.ngModel).then(功能(响应){$scope.answers.VehicleMake = response.data;});});}}}

车辆年份问题有一个类有效车辆年份.我在这里缺少什么,或者在改变 answers.vehicleyear 时还有什么其他的.我在车辆年份问题的课堂上写了一条指令 validVehicleyear,我想调用年份的更改并为车辆制造商设置新选项,但它不起作用.

plnkr.co/edit/BFGXr7LNAe0KvQipj9JJ?p=preview

我检查了一下,发现外部/内部指令概念可以在这里工作.但不知道如何申请动态班.

解决方案

返回 你的另一个问题,我尝试了几件事情,但由于这个原因没有一个工作:

您将指令作为类传递,但通过插值动态传递,这本身就是不好的做法(https://docs.angularjs.org/guide/interpolation#known-issues).类名被插值并呈现元素,但指令在插值期间未编译.

唯一有效的方法是明确传递指令名称:

class="form-control valid-vehicleyear"

但是你所有的选择元素都会有这个类/指令.

您正在尝试使所有事情自动化,并且您将这个概念推向了极致,这使得您的代码非常难以阅读并且显然无法调试.

逐个元素构建表单并在每个元素上放置自定义指令以更好地控制并没有错.

然而,将动态指令作为类从 JSON 对象传递是有问题的.

只需正常构建表单即可.它不会不那么酷或不那么易读,并且会遵循最佳实践(https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#restrict-to-elements-and-attributes)


                
            
发送“验证码”获取 | 15天全站免登陆