Javascript AngularJS操纵两个ng重复
我在HTML5视图中调用了两次相同的列表Javascript AngularJS操纵两个ng重复,javascript,angularjs,Javascript,Angularjs,我在HTML5视图中调用了两次相同的列表 <div class="list" data-ng-repeat="item in model.items"> <div class=list-item"> {{ item.name }} <a data-ng-click="addToList(item)"> <span data-ng-hide="item.checked">Add</
<div class="list" data-ng-repeat="item in model.items">
<div class=list-item">
{{ item.name }}
<a data-ng-click="addToList(item)">
<span data-ng-hide="item.checked">Add</span>
<span data-ng-show="item.checked">Remove</span>
</a>
</div>
</div>
<div class="checkbox-list" data-ng-repeat="item in model.items">
<div class=list-item">
<input type="checkbox" data-ng-checked="item.checked" data-ng-click="addToList(item)" />
{{ item.name }}
</div>
</div>
{{item.name}
在我的控制器中,我在作用域中定义了方法:
function addToList(item) {
item.checked = !item.checked;
for (var i = 0; i < this.$scope.items.length; i++) {
if (this.$scope.items.id == item.id) {
this.$scope.items[i] = item;
break;
}
}
}
功能添加列表(项){
item.checked=!item.checked;
对于(变量i=0;i
当我单击添加
或删除
按钮时,列表有一个更新,但复选框列表项没有被选中
另一方面,当选中复选框时,列表不会得到更新
如何实现这一点?看起来您正在使用控制器作为
语法
因此,在js代码中,将模型添加到控制器本身(假设您yourController
引用了控制器,并且在控制器中有您的方法):
然后在声明控制器的HTML中,按如下方式声明控制器:
ng-controller = "YourController as yourController"
然后您可以通过以下方式访问HTML中的项目:
yourController.items
您将javascript函数声明语法与
使用angular时,应始终使用angular语法,以获得模型和视图之间同步的好处。
$scope.addToList=函数(){}
var-app=angular.module('plunker',[]);
应用程序控制器('MainCtrl',函数($scope){
$scope.model={};
$scope.model.items=[{“name”:“one”},{“name”:“two”}]
$scope.addToList=函数(项){
item.checked=!item.checked;
}
});代码>
安古拉斯普朗克
文件。写(“”);
{{item.name}
添加
去除
{{item.name}
您没有将函数与$scope一起使用。这可能有助于:
$scope.addToList = function (item) {
item.checked = !item.checked;
for (var i = 0; i < $scope.items.length; i++) {
if ($scope.items.id == item.id) {
$scope.items[i] = extension;
break;
}
}
}
$scope.addToList=函数(项){
item.checked=!item.checked;
对于(变量i=0;i<$scope.items.length;i++){
如果($scope.items.id==item.id){
$scope.items[i]=扩展;
打破
}
}
}
你所说的这个.$scope.items是什么意思?
你能创建一个plunker吗?这对我来说很好。是的,这很好。我已经尝试了这个解决方案,但我的代码没有任何变化。代码没有变化意味着你已经在使用这个语法或者结果没有变化?所以解决方案中提供的代码片段很好。你能看看这是否是你所期望的吗?
yourController.items
$scope.addToList = function (item) {
item.checked = !item.checked;
for (var i = 0; i < $scope.items.length; i++) {
if ($scope.items.id == item.id) {
$scope.items[i] = extension;
break;
}
}
}