Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 扩展“角度材质”指令并将类添加到子节点_Javascript_Angularjs_Angular Material_Custom Directive - Fatal编程技术网

Javascript 扩展“角度材质”指令并将类添加到子节点

Javascript 扩展“角度材质”指令并将类添加到子节点,javascript,angularjs,angular-material,custom-directive,Javascript,Angularjs,Angular Material,Custom Directive,我正试图解决Angular Material for autocomplete中的一个已知错误,在这个错误中,向autocomplete添加任何类都不会被带入md输入容器子元素。跟踪bug。按照angular wiki上的一些基本说明,我最终找到了解决这个问题的方法,我认为这会将正确的md口音类添加到我的所有输入容器中 app.directive("mdAutocomplete", ["$window", function ($window) { "use strict";

我正试图解决Angular Material for autocomplete中的一个已知错误,在这个错误中,向autocomplete添加任何类都不会被带入md输入容器子元素。跟踪bug。按照angular wiki上的一些基本说明,我最终找到了解决这个问题的方法,我认为这会将正确的md口音类添加到我的所有输入容器中

app.directive("mdAutocomplete", ["$window", function ($window) {

    "use strict";

    return {
        link: function (scope) {
            var containers = $window.document.getElementsByTagName("md-input-container");
            console.log(containers);
            console.log(containers.length);
            for(var i = 0; i < containers.length; i++){
                angular.element(containers[i]).addClass("md-accent");
            }
        }
    };


}]);
app.directive(“mdAutocomplete”、[“$window”、函数($window){
“严格使用”;
返回{
链接:功能(范围){
var containers=$window.document.getElementsByTagName(“md输入容器”);
控制台日志(容器);
控制台.日志(容器.长度);
对于(var i=0;i
有了它,我可以清楚地在调试程序中看到指令扩展正在运行的输出,并在页面上查找元素。它发现了以下两个方面:

0:md-input-container.md-icon-float.md-accent
1:md输入容器.ng范围


我不明白的是,为什么它会在第一个类中添加md口音,而不是在第二个类中添加?第一个md输入容器本身位于页面上,第二个容器位于md自动完成内部。我对angular还是一个新手,正在试图弄清楚何时会执行这个扩展。为什么不能同时附加到数组中的两个元素上呢?我遗漏了什么?

因为这只是解决了一个已知的bug,而且我知道我的站点的设计,所以我希望所有md输入容器上都有md重音类。以下是我为解决这个问题所做的工作:

.directive("mdInputContainer", [function () {
    "use strict";
    return {
        link: function (scope, element) {
            angular.element(element).addClass("md-accent");
        }
    };
}]);
我没有尝试修改md autocomplete的子md输入容器,而是发现更容易扩展md输入容器本身,使用link函数的第二个参数添加类。现在,我可以看到包装在输入容器中的所有输入的一致性