Jquery $(this).append()在angularjs中不起作用

Jquery $(this).append()在angularjs中不起作用,jquery,angularjs,Jquery,Angularjs,当我尝试在angularjs中追加时,我得到一个错误,如 jquery.min.js:3未捕获类型错误:无法读取属性 未定义的“createDocumentFragment” 我得到的线路是错误的 $(this).append(stringDir); 其中stringDir是p元素。我在ajax调用中添加了context:this 修复错误,但仍显示错误 var app = angular.module('fileApp', []); app.controller('fi

当我尝试在angularjs中追加时,我得到一个错误,如

jquery.min.js:3未捕获类型错误:无法读取属性

未定义的“createDocumentFragment”

我得到的线路是错误的

  $(this).append(stringDir);
其中
stringDir
p
元素。我在ajax调用中添加了
context:this
修复错误,但仍显示错误

    var app = angular.module('fileApp', []);

    app.controller('fileController', function($scope,$http) {
    $scope.getFile = function(event) {
        $scope.status = $scope.clickStatus;
        if($scope.status=="0" ) {   
            $scope.clickStatus = "1";
            $scope.arrowStatus = "1";

            $scope.data = {
               path : $scope.current_directory
            };  

            $(this).find($(".arrow ")).removeClass('fa fa-caret-right').addClass('fa fa-caret-down');

            $.ajax({
                type: "post",
                url: "/cfc/file.cfc?method=show",
                dataType : 'JSON',
                data : { path : $(this).attr('current_directory') },    
                context :this,  
                success:function(response) {
                var i=0;
                    if(response) {
                        var stringFile='';
                        var stringDir = '';
                        for(i=0; i< response.DATA.length;i++){
                            var val=(response.DATA[i]);
                            if(val[2]==="Dir"){
                                var newPath = val[6]+"\\"+val[0];
                                console.log(newPath);
                                stringDir += '<p class="dirClass" style="margin-left:15px" current_directory="'+newPath+'"  ><span ><i class="fa fa-caret-right arrow"></i></span><span> <i class="fa fa-folder-open folder_icon" aria-hidden="true"></i></span>'  + val[0]+'</p>';
                            }
                            else{
                                var newPath = val[6]+"\\"+val[0];
                                stringFile += '<p class="fileClass " style="margin-left:18px" current_directory="'+newPath+'"><i class="fa fa-file file_icon" aria-hidden="true"></i>  '+ val[0] +'</p>';
                            }
                        }  
                        $(this).append($(stringDir)); 
                        $(this).append($(stringFile));   
                    }
                },
                error:function (data){
                console.log(data);
                }
            });
        }
    }

   });

 HTML

<body ng-app="fileApp" ng-controller="fileController" >
<div class="row left_row_content_drive" id ="left_row_content_drive">
<div class="localdisc_d_click" id="container_id" >
<p class="dirClass" ng-init = "current_directory= 'D:\projects' 
;clickStatus = '0' ;arrowStatus= '0' " ><i class="fa fa-hdd-o 
drive_icon"  aria-hidden="true" ng-click="getFile()"></i> Local Disc D 
</p>
</div>
</div>
</body>
var-app=angular.module('fileApp',[]);
app.controller('fileController',函数($scope,$http){
$scope.getFile=函数(事件){
$scope.status=$scope.clickStatus;
如果($scope.status==“0”){
$scope.clickStatus=“1”;
$scope.arrowStatus=“1”;
$scope.data={
路径:$scope.current\u目录
};  
$(this).find($(“.arrow”).removeClass('fa-fa-caret-right').addClass('fa-fa-caret-down');
$.ajax({
类型:“post”,
url:“/cfc/file.cfc?method=show”,
数据类型:“JSON”,
数据:{path:$(this).attr('current_directory')},
背景:这,,
成功:功能(响应){
var i=0;
如果(答复){
var stringFile='';
var stringDir='';
对于(i=0;i“+val[0]+'

”; } } $(this.append($(stringDir)); $(this.append($(stringFile)); } }, 错误:函数(数据){ 控制台日志(数据); } }); } } }); HTML

本地光盘D


不要在ajax成功回调块中使用此选项。相反,在ajax调用之前为元素创建一个变量,然后引用该变量在成功回调中访问该元素。像下面这样

 var element = this; //Hold the element in 'element' variable


   //Your ajax call
    $.ajax({
       url: "Any Url",
       success: function(response){
     if (response) {
      var stringFile = '';
      var stringDir = '';
      for (i = 0; i < response.DATA.length; i++) {
        var val = (response.DATA[i]);
        if (val[2] === "Dir") {
          var newPath = val[6] + "\\" + val[0];
          console.log(newPath);
          stringDir += '<p class="dirClass" style="margin-left:15px" 
          current_directory = "'+newPath+'" > < span > < i class =
            "fa fa-caret-right arrow" >
            <
            /i></span > < span > < i class =
            "fa fa-folder-open folder_icon"
          aria -
            hidden = "true" > < /i></span > '  + val[0]+' < /p>';
        } else {
          var newPath = val[6] + "\\" + val[0];
          stringFile += '<p class="fileClass " style="margin-left:18px" 
          current_directory = "'+newPath+'" > < i class =
            "fa fa-file file_icon"
          aria -
            hidden = "true" > < /i>  '+ val[0] +'</p > ';
        }
      }
      $(element).append(stringDir);
      $(element).append(stringFile);
    }
       }

    })
var元素=this//将元素保存在“element”变量中
//您的ajax调用
$.ajax({
url:“任何url”,
成功:功能(响应){
如果(答复){
var stringFile='';
var stringDir='';
对于(i=0;i';
}否则{
var newPath=val[6]+“\\”+val[0];
stringFile+='

'; } } $(元素).append(stringDir); $(元素).append(字符串文件); } } })
您就在这里“这”是控制器,对不起!我的错误,但是如果您将“this”替换为元素引用,那么此代码将运行

我认为
不是指DOM元素。您可以提供使用$(this)的上下文代码吗?您在控制器/组件或服务中使用过吗?你用的是哪个版本的Angular?是的,我也这么想,但是我怎么能解决这个问题呢?我可以使用什么来代替“this”?请提供完整的代码如何使用以及在哪里使用
$(this)
。相应的渲染html也会很好。在你的问题“this”中添加它,在这种情况下不是元素。所以我不认为它会起作用。这需要是一个元素,因为他正在使用jquery的append。从那里他将得到元素@shridhar,你仍然在使用这个控制器