对象不支持此属性或方法

最好

我正在尝试开发通用验证指令。我的主要目的是申请输入元素的父的指令,并使用该指令,我要添加验证状态一样has-error,并has-success通过引导提供的类。

我能够在Chrome中做到这一点。但是,我的问题始于IE8。是的,我很不幸。我必须支持IE8。

无论如何,我的代码能够在模板的适当位置包含输入元素。但是,我不知道为什么该错误会在IE8中弹出,并且在哪一行也是如此。错误是

TypeError: Object doesn't support this property or method<div ng-transclude>

这是我的代码,因为它只是我现在正在准备的演示,所以我使用了内联样式和脚本。

<!DOCTYPE html>
<html ng-app="myApp" id="ng-app">
<head>
    <title>All in One Validation Directive</title>

    <script type="text/javascript" src="scripts/angular.js"></script>
    <link type="text/css" rel="stylesheet" href="styles/bootstrap.css"/>

    <script type="text/ng-template" id="validationContent">
        <div ng-transclude></div>
        <p class="bg-danger">{{errorMessage}}</p>
    </script>

    <script type="text/javascript">
        var app=angular.module('myApp', []);

        app.controller('DefaultController', function($scope){
            $scope.user={};
        });

        app.directive('validationDirective', function(){
            return {
                restrict: 'A',
                /*template: function(){
                    return angular.element(document.querySelector('#validationContent')).html();
                },*/
                template: '<div ng-transclude></div>',
                transclude: true,
                link: function(scope, element, attrs){

                }
            };
        });
    </script>
</head>

<body ng-controller="DefaultController">
    <div class="container">
        <div class="panel panel-default">

            <div class="panel-heading">
                <h4>All in One Validation Directive</h4>
            </div>


            <div class="panel-body">
                <div class="form-horizontal">
                    <div class="form-group">
                        <label class="control-label col-xs-3">Enter Your Name</label>

                        <div class="col-xs-3" data-validation-directive>
                            <input type="text" class="form-control" ng-model="user.name">
                        </div>
                    </div>
                </div>
            </div>
            User Name is here :{{user.name}}
        </div>
    </div>
</body>
</html>

如果您认为我针对此问题使用了错误的方法。请提出正确的建议。

编辑

经过一番尝试之后,我可以得出结论,这是由于输入元素存在于待分割的格中而导致的。如果我从该划分中删除输入元素,那么一切都会正常运行,但这不是该指令的目标。任何人 ?任何的想法 ?我该如何解决呢?还是我走错了方向?有什么线索吗?

加尔帕克

经过很多断点和Sarah的宝贵帮助之后,事实证明它与两件事有关:

  1. IE8将您input的结束标记后的空白检测为(但不忽略)空白作为额外的节点(尝试将其附加到)div[ng-transclude]

  2. JQLite对文本节点的处理不正确(我不完全确定未正确处理的内容,但是我不打算进一步调查:/)。


可能的修复:

  1. 包含jQuery:这解决了这个问题(可能还有其他潜在的问题),但是必须包含一个完整的lib只是为了用一个浏览器的一个版本解决一个极端情况,这令人沮丧。

  2. 确保控件的结束标记后没有空格字符(空格,制表符,换行符)。我不确定哪些标签会受到影响(<input><select>而且<fieldset>似乎受到影响,但可能还有其他标签)。
    您可以删除任何空格:<input ... /></div>
    或者(如果您想保留代码结构,例如,出于可读性考虑),则可以将空白“包装”在注释块中:

       <div>
           <input ... /><!--
    --></div>
    

另请参见此简短演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对象不支持此属性或方法

来自分类Dev

对象不支持此属性或方法

来自分类Dev

对象不支持此属性或方法

来自分类Dev

对象不支持此属性或方法ActiveWorkbook对象VBA

来自分类Dev

VBA对象不支持此属性或方法

来自分类Dev

调试-IE对象不支持此属性或方法

来自分类Dev

对象不支持此属性或方法:oFldr.GetFolder

来自分类Dev

对象不支持此属性或方法Chartspace

来自分类Dev

对象在VBA中不支持此属性或方法

来自分类Dev

Rails:类型错误:对象不支持此属性或方法

来自分类Dev

用户定义类 - 对象不支持此属性或方法

来自分类Dev

对象不支持属性或方法“填充”

来自分类Dev

对象不支持属性或方法“删除”

来自分类Dev

对象不支持属性或方法“ kendoDatePicker”

来自分类Dev

对象不支持“最近”的属性或方法

来自分类Dev

$对象不支持'live'属性或方法

来自分类Dev

对象不支持“前缀”的属性或方法

来自分类Dev

对象不支持“打开”属性或方法

来自分类Dev

对象不支持属性或方法“推”

来自分类Dev

对象不支持属性或方法“ setMap”

来自分类Dev

对象不支持属性或方法getUserData

来自分类Dev

对象不支持属性或方法“多选”

来自分类Dev

对象不支持属性或方法“.DataLabels”

来自分类Dev

将对象传递给Class方法:对象不支持此属性或方法

来自分类Dev

错误438对象不支持此属性或方法-带字典的类对象

来自分类Dev

简单的JSON对象抛出“对象不支持此属性或方法”

来自分类Dev

VBS告诉我对象不支持此属性

来自分类Dev

Welcome#index TypeError中的ExecJS :: ProgramError:对象不支持此属性或方法

来自分类Dev

Excel VBA错误438:对象不支持此属性或方法

Related 相关文章

热门标签

归档