我在html代码中有一个菜单,当用户点击它时,我将它附加到元素(在ng-repeat中创建)中,如果用户单击元素外部,我将删除菜单。 问题是,我在元素中插入的新菜单不知道重复中的当前项。它确实调用了作用域中的函数,但是当我将当前项作为参数传递时,它传递undefined。 / p>
这里我是如何收录菜单的:
$scope.openFileMenu = function (item) {
var id = "#file-item-" + item.f_id;
if ($(id).find(".filemenu").length > 0)
return;
$(".filemenu").remove();
$(id).prepend($compile("<div class='filemenu' ng-include=\"'views/common/file_tools.html'\"></div>")($scope));
$(document).one('click', function closeMenu(e) {
if ($(id).has(e.target).length === 0) {
$(id).find(".filemenu").remove();
} else {
$(document).one('click', closeMenu);
}
});
}
这里是重复代码:
<div class="file-box animated fadeInDown" ng-repeat="item in files" ng-init="">
<div class="file" id="file-item-{{item.f_id}}">
<a href="" ng-click="openFileMenu(item)">
.......... file details.......
</a>
</div>
</div>
因此,每次用户点击该项目时,菜单都会打开(菜单html文件只有一个ul元素)
比,有一个deleteFile函数,从html菜单文件中调用一个li
$scope.deleteFile = function (item) {
alert(item);
var url = "handlers/FilesService.asmx/deleteFile";
$.ajax({
type: 'POST',
url: url,
data: JSON.stringify({ f_id: item.f_id }),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
alert(msg.d);
},
error: function (xhr, ajaxOptions, thrownError) {
}
});
}
但是deleteFile函数中的参数将始终未定义。
这是我包含的html文件:
<ul>
<li tooltip-placement="bottom" tooltip="download"><i class="fa fa-download fa-lg"></i></li>
<li tooltip-placement="bottom" tooltip="delete" class="red" ng-click="deleteFile(item)"><i class="fa fa-times fa-lg"></i></li>