Jquery $(this).append()在angularjs中不起作用
当我尝试在angularjs中追加时,我得到一个错误,如 jquery.min.js:3未捕获类型错误:无法读取属性 未定义的“createDocumentFragment” 我得到的线路是错误的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
$(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]+””;
}
否则{
var newPath=val[6]+“\\”+val[0];
stringFile+='“+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
<
/i> '+val[0]+'';
}否则{
var newPath=val[6]+“\\”+val[0];
stringFile+=''+val[0]+'
';
}
}
$(元素).append(stringDir);
$(元素).append(字符串文件);
}
}
})
您就在这里“这”是控制器,对不起!我的错误,但是如果您将“this”替换为元素引用,那么此代码将运行我认为此
不是指DOM元素。您可以提供使用$(this)的上下文代码吗?您在控制器/组件或服务中使用过吗?你用的是哪个版本的Angular?是的,我也这么想,但是我怎么能解决这个问题呢?我可以使用什么来代替“this”?请提供完整的代码如何使用以及在哪里使用$(this)
。相应的渲染html也会很好。在你的问题“this”中添加它,在这种情况下不是元素。所以我不认为它会起作用。这需要是一个元素,因为他正在使用jquery的append。从那里他将得到元素@shridhar,你仍然在使用这个控制器