-2

我需要通过控制器内的 ng-click 元素的 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-hide 隐藏元素。

4

2 回答 2

4

就像我在评论中所说的那样,您应该有一个支持数据模型并在您的 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;
    };
};
于 2013-06-26T14:29:14.250 回答
3

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

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

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

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

注意:这不是 Angular 的好习惯。假设您的editMode函数只隐藏一个元素,您可以使用ng-hideorng-show指令来实现它,如您的问题评论中所述。

于 2013-06-26T14:06:20.453 回答