通过 HTTP 请求加载的元素的角度单击事件不起作用
angular click event for element loaded via http request not works
codepen link : http://codepen.io/gauravcoder/pen/vLWEjJ?editors=101我是 Angular JS 的新手
我有点击的项目,我现在发出警报,它工作正常,问题是当通过 http 请求加载项目时,单击事件不起作用。
HTML代码:(前两个非AJAX项目的警报仅在通过ajax调用加载的其他项目不起作用的情况下有效)
<ion-list>
<div style="height:40px;border-bottom:1px solid #ccc" id="clickit">
Item No Ajax call
</div>
<div style="height:40px;border-bottom:1px solid #ccc" id="clickit">
Item No Ajax call
</div>
<div ng-repeat="item in items" style="height:40px;border-bottom:1px solid #ccc" id="clickit">
Item Ajax Call: {{ item.username }}
</div>
</ion-list>
<ion-infinite-scroll ng-if="!noMoreItemsAvailable" on-infinite="loadMore()" distance="10%"></ion-infinite-scroll>
</ion-content>
JS代码
angular.module('ionicApp', ['ionic']).controller('MyCtrl', function($scope,$http) {
$("div#clickit").click(function() {
alert('hey');
});
$scope.noMoreItemsAvailable = false;
$scope.currentPage = 0;
$scope.loadMore = function() {
$http.get('http://mourjewels.com/www/stones2.php?page='+$scope.currentPage).success(function(items) {
$scope.currentPage += 1;
$scope.items = $scope.items.concat(items.data);
console.log(items.count);
$loopcount = Math.ceil(items.count/10);
console.log($loopcount);
$scope.$broadcast('scroll.infiniteScrollComplete');
if($scope.currentPage >= $loopcount){
$scope.$broadcast('scroll.infiniteScrollComplete');
$scope.noMoreItemsAvailable = true;
}
});
};
$scope.items = [];
});
这是因为 Angular 在将 AJAX 加载的元素注入到 DOM 之前执行控制器脚本。
无论如何,在 Angular 中肯定有一种不同的方法。您可以使用 Angular 的 ng-click
指令。
在您的控制器中,
$scope.doSomething = function () {
// Does something
};
在您的 HTML 中,
<div ng-click="doSomething()"></div>
像ng-repeat
这样的东西,ng-click
在Angular中被称为指令,只是对原生DOM的自定义扩展。 ng-
前缀指令都包含 Angular 核心。每次 AngularJS 更新 DOM 时,它都会收集 DOM 中存在的指令并执行指令。因此,在您的情况下,将执行ng-repeat
和ng-click
指令。 ng-click
基本上注册 onclick DOM 事件处理程序以在当前范围内执行给定的函数 (doSomething)。因此,无论如何或何时注入 DOM,它都会起作用。
当然,解释非常简化。但我希望这对你有意义:)
相关文章:
- 将单击事件添加到数据表
- 将单击事件添加到附加的项目中
- 在IE8中不起作用的元素上触发单击事件
- 链接上的IE10 jquery句柄单击事件不起作用
- 如何使用纯 JavaScript 在所有浏览器中区分左/右/中键单击事件
- 如何在master中调用细节网格作为单击事件
- 兰吉 |如何在 span 标签上使用单击事件删除突出显示的文本
- 如何隐藏按钮单击事件上的占位符
- 复选框,然后单击事件处理
- 如何使用for循环添加所有按钮'单击事件
- 手柄'img'单击事件并插入'alt'使用jQuery将属性转换为文本框
- 覆盖单击事件不起作用
- 单击事件打开两个弹出菜单
- 单击事件不起作用
- 从其他元素上的单击事件访问image src属性
- 单击事件中的ajax请求后重定向
- 如何缩放地图框传单中的标记单击事件
- 在没有焦点的情况下捕获画布上的第一次单击事件
- 通过单击事件识别画布上的对象
- 如何将单击事件添加到JQuery中动态添加的元素中