基本上在我的控制器中,我正在进行$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运行之后挂钩但却找不到任何相似内容的东西。
答案 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);
}
});
这是一个使用长超时为使用该指令的重复项生成数据的演示: