在控制器中获取对象

Get object in controler

本文关键字:取对象 获取 控制器      更新时间:2023-09-26

我需要通过在控制器内点击ng来获取元素的jQuery来获取DOM对象。

HTML

<ul>
    <li ng-repeat="data in list">
        <span ng-click="editMode(this, data.id)">edit</span>
    </li>
</ul>

控制器

$scope.editMode = function(obj, id) {
    $(obj).hide(); //do not use jQuery hide() in angular! I's just a test!
}

变量obj有一个元素,但我无法使用它。如果我尝试$(obj).hide()什么也没发生。


编辑:这不是在Angular中隐藏元素的正确方法!这只是一个例子!使用ng隐藏元素。

正如我在评论中所说,您应该有一个支持数据模型,并在您的angular html中声明反应。

下面是小提琴的例子:

http://jsfiddle.net/mVCkY/

<li ng-repeat="data in list">
    <span ng-click="editMode(data)" ng-hide="data.isInEditMode">edit</span>
</li>
function DataCtrl($scope) {
    $scope.list = [{}, {}, {}];
    $scope.editMode = function(obj) {
        obj.isInEditMode = true;
    };
};

在您的示例中,this指的是当前角度$scope实例,而不是元素。获取元素的最简单方法是通过事件对象:

<span ng-click="editMode($event, data.id)">edit</span>

然后在处理程序中,您可以访问目标元素:

$scope.editMode = function(e, id) {
    $(e.target).hide();
};

注意:这不是Angular的良好做法。假设您的editMode函数只隐藏一个元素,那么您可以使用问题注释中提到的ng-hideng-show指令来实现它。