在ng-repeat中追加元素

时间:2015-11-14 11:01:29

标签: javascript jquery html angularjs append

我在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>

0 个答案:

没有答案