angularjs在ng-repeat中使用ng-model遇到的问题
作者:bea
在ng-repeat中使用ng-model时会有许多问题,有的人碰到无法获取绑定的数据内容,有的人遇到改动绑定的数据内容时所有循环生成的内容一起改变。上面的问题我在开发时也遇到过,但是解决后我却怎么也还原不了那种情况了,只能先简单介绍一下无法获取的情景该如何解决。 例如: html: <body><div ng-controller="selectController"> <div ng-repeat="pop in citylist"&g
在ng-repeat中使用ng-model时会有许多问题,有的人碰到无法获取绑定的数据内容,有的人遇到改动绑定的数据内容时所有循环生成的内容一起改变。上面的问题我在开发时也遇到过,但是解决后我却怎么也还原不了那种情况了,只能先简单介绍一下无法获取的情景该如何解决。
例如:
html:
<body>
<div ng-controller="selectController">
<div ng-repeat="pop in citylist">
<select ng-model="p">
<option value="" style="display:none;">{{pop.pop}}</option>
<option value="北京">北京</option>
<option value="上海">上海</option>
<option value="广州">广州</option>
</select>
<button ng-click="cs()">ceshi</button>
</div>
</div>
</body>
js:
<script>
var app = angular.module('app', []);
app.controller('selectController', function ($scope) {
$scope.citylist=[{id:1,pop:"北京"},{id:1,pop:"上海"},{id:1,pop:"广州"}];
$scope.cs=function(){
console.log($scope.p);
}
})
</script>
很简单的功能,想要在点击更改按钮时获取select当前选中的数据内容,但是你会发现这样写只能得到undefined,此时有的人会提出可以将p赋予成为一个对象,通过key:value的方式来保存每一次的选择
$scope.p={};
这样确实没问题,但是会有一个新的问题那就是只要改动了一项,那么所有的内容都会跟着一起改变,那么有没有更好的方法呢?
只要一个小小的改动
html:
<button ng-click="cs(p)">ceshi</button>
js:
$scope.cs=function(p){
console.log(p);
}
这只是个简单的例子,如大家在实际使用时发现有别的问题也可以在评论中留言。
有用 | 无用
例如:
html:
<body>
<div ng-controller="selectController">
<div ng-repeat="pop in citylist">
<select ng-model="p">
<option value="" style="display:none;">{{pop.pop}}</option>
<option value="北京">北京</option>
<option value="上海">上海</option>
<option value="广州">广州</option>
</select>
<button ng-click="cs()">ceshi</button>
</div>
</div>
</body>
js:
<script>
var app = angular.module('app', []);
app.controller('selectController', function ($scope) {
$scope.citylist=[{id:1,pop:"北京"},{id:1,pop:"上海"},{id:1,pop:"广州"}];
$scope.cs=function(){
console.log($scope.p);
}
})
</script>
很简单的功能,想要在点击更改按钮时获取select当前选中的数据内容,但是你会发现这样写只能得到undefined,此时有的人会提出可以将p赋予成为一个对象,通过key:value的方式来保存每一次的选择
$scope.p={};
这样确实没问题,但是会有一个新的问题那就是只要改动了一项,那么所有的内容都会跟着一起改变,那么有没有更好的方法呢?
只要一个小小的改动
html:
<button ng-click="cs(p)">ceshi</button>
js:
$scope.cs=function(p){
console.log(p);
}
这只是个简单的例子,如大家在实际使用时发现有别的问题也可以在评论中留言。
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- jQuery弹层插件jquery.fancybox.js用法实例
- 基于JS实现新闻列表无缝向上滚动实例代码
- jQuery validate插件实现ajax验证重复的2种方法
- jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
- 如何利用JS通过身份证号获取当事人的生日、年龄、性别
- jQuery解析json格式数据简单实例
- 基于javascript实现根据身份证号码识别性别和年龄
- 基于jQuery仿淘宝产品图片放大镜特效
- jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
- jQuery validate插件submitHandler提交导致死循环解决方法
- jQuery prototype冲突的2种解决方法(附demo示例下载)
- jquery mobile开发常见问题分析
- json格式数据的添加,删除及排序方法
- jquery及js实现动态加载js文件的方法
- js console.log打印对像与数组用法详解
- JS遍历数组及打印数组实例分析
- js采用concat和sort将N个数组拼接起来的方法
- 如何用angularjs制作一个完整的表格
- angularjs自定义ng-model标签的属性