如何使用AngularJS将jQuery事件绑定到动态内容

时间:2013-04-08 23:00:34

标签: jquery angularjs

基本上在我的控制器中,我正在进行$http.get()加载一些html来设置“当前视图”。我的问题是我无法弄清楚如何使用这个新的动态内容重新绑定jQuery事件。

现在,我采取了这样的方式:

$http.get('/someurl', {}).success(function(data){
  $scope.detailedView = data;
  // Now here comes the rebinding
  setTimeout(function(){
    // Use jquery to bind the new content
  }, 1500);
});

我一直在寻找一个解决方案,我找到的任何相关内容都指向使用指令。我已经研究了这个,但我不知道如何将指令用于这样的事情。

注意没有超时,绑定会在动态内容实际位于DOM之前运行。我也试过找到一些类似于在$ apply运行之后挂钩但却找不到任何相似内容的东西。

1 个答案:

答案 0 :(得分:2)

首先应该看看你用jQuery做什么是不能用angular进行的。

这是可以使用的最简单的指令版本:

<div ng-repeat="item in items" my-directive>Item {{$index+1}}</div>
app.directive('myDirective', function ($timeout) {
    return function (scope, element, attrs) {
        $timeout(function () {
            /* element is a jQuery object when jQuery loaded in page before angular,*/
            /* otherwise is a jQlite object that has many of same methods as jQuery*/
            element.css({ 'border': '1px solid green', 'margin': '10px 30px','padding':'5px'});
        }, 0);
    }
 });

这是一个使用长超时为使用该指令的重复项生成数据的演示:

http://jsfiddle.net/AXYGL/