刷新 ng-repeat ng-class 条件删除元素
refresh ng-repeat ng-class conditional following removal of element
我在我的布局中使用 bootstrap 的偏移量,并且有一个简单的条件将偏移量放置在每第 5 个元素上。
class="col-md-2 col-sm-2 col-xs-5 ng-class:{'col-md-offset-2 col-sm-offset-2' : !($index % 5)}"
我还制作了一个指令,在悬停时显示一个小红框,允许用户删除他们的元素。工作正常,除了布局不会刷新并且偏移量设置在错误的元素上,使布局变得一团糟。
我尝试执行 scope.$apply(),但这没有帮助。我怎样才能做到这一点?
我的html:
<body ng-controller="MyController">
<div class="container">
<div class="row">
<div ng-repeat="image in images"
dg-deletable=""
class="col-md-2 col-sm-2 col-xs-5 ng-class:{'col-md-offset-2 col-sm-offset-2' : !($index % 5)}">
<div class="imagebox">
<div>{{image.name}}</div>
<div class="imagecover"></div>
<img width="140" src="{{image.file}}" />
</div>
</div>
</div>
</div>
</body>
在我的指令中:
delete_btn.on('click', function(event) {
scope.$apply(function() {
element.remove();
});
});
http://plnkr.co/edit/2ADoSYwPuh46Zh5ylmjw?p=preview
(您需要以全页模式查看)
ng-class 需要是它自己的 HTML 属性,像这样
<body ng-controller="MyController">
<div class="container">
<div class="row">
<div ng-repeat="image in images"
dg-deletable=""
class="col-md-2 col-sm-2 col-xs-5" ng-class="{'col-md-offset-2 col-sm-offset-2' : !($index % 5)}">
<div class="imagebox">
<div>{{image.name}}</div>
<div class="imagecover"></div>
<img width="140" src="{{image.file}}" />
</div>
</div>
</div>
</div>
</body>
你是对的@dgig。 !($index % 5)
工作正常。问题是您也应该从数组中删除图像。
我已经更改了 plunker
我认为使用 angular 可以更好地编写代码。您可以使用 angular 指令来触发事件并设置样式 - sheet.
delete_btn.on('click', function(event) {
scope.$apply(function() {
angular.forEach(scope.images, function(img){
if(img.name == attr.imagename){
scope.images.splice(scope.images.indexOf(img),1);
}
});
element.remove();
});
});
我将 imagename
设置为要在删除功能中使用的属性。
<body ng-controller="MyController">
<div class="container">
<div class="row">
<div ng-repeat="image in images" dg-deletable="" imagename={{image.name}} class="col-md-2 col-sm-2 col-xs-5 ng-class:{'col-md-offset-2 col-sm-offset-2' : !($index % 5)}">
<div class="imagebox">
<div>{{image.name}}</div>
<div class="imagecover"></div>
<img width="140" src="{{image.file}}" />
</div>
</div>
</div>
</div>
</body>
关于angularjs数据绑定的问题很简单,参考我的另一个
只需要使用obj.images绑定图片数据即可,不能直接使用图片
我在我的布局中使用 bootstrap 的偏移量,并且有一个简单的条件将偏移量放置在每第 5 个元素上。
class="col-md-2 col-sm-2 col-xs-5 ng-class:{'col-md-offset-2 col-sm-offset-2' : !($index % 5)}"
我还制作了一个指令,在悬停时显示一个小红框,允许用户删除他们的元素。工作正常,除了布局不会刷新并且偏移量设置在错误的元素上,使布局变得一团糟。
我尝试执行 scope.$apply(),但这没有帮助。我怎样才能做到这一点?
我的html:
<body ng-controller="MyController">
<div class="container">
<div class="row">
<div ng-repeat="image in images"
dg-deletable=""
class="col-md-2 col-sm-2 col-xs-5 ng-class:{'col-md-offset-2 col-sm-offset-2' : !($index % 5)}">
<div class="imagebox">
<div>{{image.name}}</div>
<div class="imagecover"></div>
<img width="140" src="{{image.file}}" />
</div>
</div>
</div>
</div>
</body>
在我的指令中:
delete_btn.on('click', function(event) {
scope.$apply(function() {
element.remove();
});
});
http://plnkr.co/edit/2ADoSYwPuh46Zh5ylmjw?p=preview (您需要以全页模式查看)
ng-class 需要是它自己的 HTML 属性,像这样
<body ng-controller="MyController">
<div class="container">
<div class="row">
<div ng-repeat="image in images"
dg-deletable=""
class="col-md-2 col-sm-2 col-xs-5" ng-class="{'col-md-offset-2 col-sm-offset-2' : !($index % 5)}">
<div class="imagebox">
<div>{{image.name}}</div>
<div class="imagecover"></div>
<img width="140" src="{{image.file}}" />
</div>
</div>
</div>
</div>
</body>
你是对的@dgig。 !($index % 5)
工作正常。问题是您也应该从数组中删除图像。
我已经更改了 plunker
我认为使用 angular 可以更好地编写代码。您可以使用 angular 指令来触发事件并设置样式 - sheet.
delete_btn.on('click', function(event) {
scope.$apply(function() {
angular.forEach(scope.images, function(img){
if(img.name == attr.imagename){
scope.images.splice(scope.images.indexOf(img),1);
}
});
element.remove();
});
});
我将 imagename
设置为要在删除功能中使用的属性。
<body ng-controller="MyController">
<div class="container">
<div class="row">
<div ng-repeat="image in images" dg-deletable="" imagename={{image.name}} class="col-md-2 col-sm-2 col-xs-5 ng-class:{'col-md-offset-2 col-sm-offset-2' : !($index % 5)}">
<div class="imagebox">
<div>{{image.name}}</div>
<div class="imagecover"></div>
<img width="140" src="{{image.file}}" />
</div>
</div>
</div>
</div>
</body>
关于angularjs数据绑定的问题很简单,参考我的另一个
只需要使用obj.images绑定图片数据即可,不能直接使用图片