使用angular的ng-repeat遇到的一个问题
问题描述:ng-repeat绑定的数据集动态更新之后其包裹的子元素所绑定的事件全部丢失;
问题详述:
问题代码如下:
<style>
img{width:100px;height:100px;}
.foo{width:50px;height:50px;border:1px solid #ccc;}
</style><html>
<div ng-app="my" ng-controller="test">
<button ng-click="change()">Change</button>
<div ng-repeat="address in addresses">
<div class="foo">{{address}}</div>
</div>
</div></html>
<script>
angular.module('my',[]).controller('test',function($scope){
$scope.sites=[['A1','A2'],['B1','B2']];
$scope.addresses=$scope.sites[0];
$scope.change=function(){$scope.addresses=$scope.sites[1];};
});
$(function(){
$(".foo").click(function(){alert(1)});
});
</script>
页面加载完毕后给foo类元素绑定的事件都正常工作,点击Change按钮改变数据集addresses,原先给foo类元素绑定的点击事件全部丢失;
解决方案:
目前并没有找出治本的方法,一种比较low的折衷方案就是使用中间量,修改后的代码如下:
<style>
img{width:100px;height:100px;}
.foo{width:50px;height:50px;border:1px solid #ccc;}
</style>
<html>
<div ng-app="my" ng-controller="test">
<button ng-click="change()">Change</button>
<div ng-repeat="i in nums">
<div class="foo">{{addresses[i]}}</div>
</div>
</div>
</html>
<script>
angular.module('my',[]).controller('test',function($scope){
$scope.sites=[['A1','A2'],['B1','B2']];
$scope.addresses=$scope.sites[0];
$scope.change=function(){$scope.addresses=$scope.sites[1];};
$scope.nums=[];
for(var i=0;i<$scope.addresses.length;++i){$scope.nums.push(i);}
});
$(function(){
$(".foo").click(function(){alert(1)});
});
</script>
其实就是避免了ng-repeat中的数据集发生变化,如果有更好的解决方案请多多指教。
使用angular的ng-repeat遇到的一个问题的更多相关文章
- Angular: 执行ng lint后如何快速修改错误
当我第一次被分配到“修正执行ng lint语句后的错误”这项任务前,我就被导师提前告知这是一个很无聊的任务,当我开始后,我发现其实有一些办法可以加快这个无聊单调的工作.接下来,我就分享一下我的经验. ...
- Angular CLI 创建你的第一个 Angular 示例程序
第一步:安装 Angular CLI 你要使用 Angular CLI 来创建项目.创建应用和库代码,并执行多种开发任务,比如测试.打包和发布. 全局安装 Angular CLI. 要想使用 npm ...
- Angular CLI ng常用指令整理
一.组件创建 ng generate component heroes 二.运行项目 ng serve --open //--open 立即打开 三.创建指令 ng g directive my-ne ...
- Angular入门,开发环境搭建,使用Angular CLI创建你的第一个Angular项目
前言: 最近一直在使用阿里的NG-ZORRO(Angular组件库)开发公司后端的管理系统,写了一段时间的Angular以后发现对于我们.NET后端开发而言真是非常的友善.因此这篇文章主要是对这段时间 ...
- Angular实战之使用NG-ZORRO创建一个企业级中后台框架
前言: 在之前的一篇文章已经介绍过了,公司正在使用NG-ZORRO组件库开发后台应用,并且详细的介绍了Angular开发环境的搭建和项目的创建.这篇文章就是为了让大家熟悉了解我们该如何在Angular ...
- Angular实战之使用NG-ZORRO创建一个企业级中后台框架(进阶篇)
前言: 上一篇文章我们讲了如何在创建的Angular项目中快速引入ng-zorro-antd企业中台组件库,并且快速构建后台管理页面框架模板.这一章主要介绍的是如何在创建好的后台管理页面框架的快速生成 ...
- angular.js的ng-app 指令定义一个 AngularJS 应用程序。
<!DOCTYPE html> <html lang="en" ng-app> <head> <meta charset="UT ...
- angular自定义指令 repeat 循环结束事件;limitTo限制循环长度、限定开始位置
1.获取repeat循环结束: 自定义指令: .directive('repeatFinish', function () { return { link: function (scope, elem ...
- angular 的 @Input、@Output 的一个用法
angular 使用 @input.@Output 来进行父子组件之间数据的传递. 如下: 父元素: <child-root parent_value="this is parent ...
- ANGULAR 使用 ng build --prod 编译报内存错误的解决办法
如果你遇到如下的情况 <--- Last few GCs ---> [13724:0000020D39C660D0] 231298 ms: Mark-sweep 1356.3 (1433. ...
随机推荐
- bzoj 1432 [ZJOI2009]Function(找规律)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1432 [思路] 找(cha)规(ti)律(jie) 分析戳这儿 click here ...
- 恒天云技术分享系列6 – vLan网络原理解析
转载自恒天云官网:http://www.hengtianyun.com/download-show-id-15.html Vlan网络模式优点 增加网络可扩展性 网络隔离,每个租户拥有独立的网络及vl ...
- RESTLET开发实例
1 前提 由于近期工作的需要,要把RESTLET应用到项目中,于是在网上参考了一些资料的基础上,实践了一个关于RESTLET接口的小例子. Restlet的思想是:HTTP客户端与HTTP服务器之间的 ...
- 解决网站出错后 跳转 友好页面 的 asp .net 配置
<system.webServer> <httpErrors errorMode="DetailedLocalOnly"> <remove statu ...
- java 内部类的使用
http://www.cnblogs.com/wenruo/p/5387995.html 内部类 就是在类中嵌套的另一个类. 非静态内部类 创建内部类的方式就是把类定义在外部类里面. class Ou ...
- emWin -- 模拟器系列1 - 如何建立模拟器开发环境
面对如此强大的emWin,大家是否都有跃跃欲试的冲动呢?但是没有硬件可以调试的童鞋,难道只能望洋兴叹?非也.非也.Segger公司早就考虑到了.Segger推出模拟器的目的不仅仅是为了解决没有硬件的烦 ...
- gulp 基础运用
全局安装gulp $npm install --global gulp 作为项目的开发依赖安装 //--save-dev 开发依赖,储存在package.json的devDependencies中,如 ...
- ISE和Modelsim联合仿真(转)
相信很多人会遇到过这个问题,不知如何让ISE调用Modelsim进行仿真.我也迷糊了不少时间,查查找找,终于弄明白了,所以有了本文,和大家分享一下.我尽量讲得详细点儿,多多上图. 我的环境:Windo ...
- Oracle-12541:TNS:无监听程序 .
背景:自己机子做oracle服务器,其他机子可以ping得通我的机子,但是jdbc就是连不上,后来用plsql连出现无监听程序.... 我昨天重新安装Oracle后,用PL/SQL Developer ...
- C#WinForm应用程序实现自动填充网页上的用户名和密码并点击登录按钮【转载】
使用WebBrowser控件,在documentComplete事件处理器里写 HtmlElement name = webBrowser1.Document.GetElementById(" ...