从ng-click中使用Angular中的Angular或Jquery删除元素

时间:2014-04-01 21:56:01

标签: jquery angularjs

我的角度和Jquery在我的页面上工作。如何通过控制器中的功能删除图像元素?我想$(this).remove()会处理它,但没有任何反应。任何建议将不胜感激。

查看

   <li class="moment_block" ng-repeat="moment in moments" ng-class="{noDisplay: !moment.screenshotUrl}">
            <div><p>{{moment.title ? moment.title : "No caption"}}</p> <img src="img/filledHeart.png" alt="fave"  ng-click="addToStorage(moment.title, moment.screenshotUrl)"/></div>
            <img src="{{moment.screenshotUrl}}" alt="{{moment.title}}"/>
        </li>

控制器

 $scope.addToStorage = function(title, imgUrl){
    $(this).remove();
    }

1 个答案:

答案 0 :(得分:1)

在这种情况下,ng-if会起作用。只需在模型中创建一个布尔值,在控制器中只需更改布尔值即可。在HTML中使用ng-if

这样的东西

HTML

<img src="img/filledHeart.png" ng-if="myModel.someBool" ng-click="dostuff()"/>

JS

$scope.myModel = {someBool = true}
$scope.doStuff = function(){
   $scope.myModel.someBool = false;
}

如果您使用重复元素或其他内容执行此操作,您可以将bool存储在您重复的项目上,例如item.someBool,然后只传递函数中的项目(在这种情况下,item是数组中的数据元素)不是DOM元素。)

如果现有指令不能完全按照您的意愿执行,并且您需要自己进行一些DOM操作,那么您只需编写自己的指令即可。关于这方面的文档是非常复杂的,所以它很容易迷失,但你可以真正地进一步发展它们,因为你了解整个过程,这也有助于你理解内置指令或第三方指令。昨天我把一个plnkr放在一起,为那些不了解它们的人展示了一个非常基本的指令:

http://plnkr.co/edit/N9UiVc0vTdwlo6lBB2xm

此处还有关于指令的文档,包括创建自己的http://docs.angularjs.org/guide/directive