angular ng在条件下重复添加样式
angular ng-repeat add style on condition
我在一个div列表上使用ng repeat,并在json中手动添加它渲染这个div的项目。我需要定位我在json中添加的最后一个div,它会自动在屏幕上呈现,couse光标所在的位置,其余的都保持在同一位置,但没有给出呈现它的json中的位置。
我在这方面的方法类似于
<div ng-repeat="contact in jsonContacts" style="left: {{lastX}}px; top: {{lastY}}px;"></div>
但当我这样做时,所有的div都会得到这个位置,所以我需要使用$last变量来创建一个条件,以添加或删除带有left和top css的样式标记。
提前谢谢你,丹尼尔!
基于你的html,你应该试试这个
<div ng-repeat='contact in jsonContacts' ng-style='{"left":($last?lastX:null)+"px","top":($last?lastY:null)+"px"}'>{{item}}</div>
这是要确认的小提琴http://jsfiddle.net/cmyworld/yFc6J/1/
请参阅fidd以了解这两种方法的示例(在jsfiddle中使用颜色作为位置更难)
选项1:ng样式和范围函数
ng样式可以让你做到这一点,为了保持它的整洁和可测试性,你应该定义一个范围函数,如下所示(尽管1.1.5增加了对三元运算符的支持,但目前在angular的1.0.x稳定版本的angular表达式中不支持三元运算符)。
ng-style='myStyleFunction($last)'
在控制器中,定义:
$scope.myStyleFunction = function($last) {
return {
'left': $last ? $scope.lastX + 'px' : '',
'top': $last ? $scope.lastY + 'px' : ''
};
}
选项2:自定义指令
或者,你可以更"有角度"地思考,并定义一个指令:
dirModule.directive('positionLast', function() {
return {
scope: true,
link: function (scope, $element, attrs) {
if (scope.$last) {
// if jQuery is present use this, else adjust as appropriate
$element.css("left", $scope.lastX + 'px');
$element.css("top", $scope.lastY + 'px');
}
}
}
});
然后:
<div ng-repeat="contact in jsonContacts" position-last> ...
EDIT这是通过使用scope: true
并在ng-repeat
元素上声明指令来实现的。由于一个元素上的所有指令都只创建了一个新的作用域(假设至少有一个指令请求一个新作用域),因此它可以访问ng-repeat
作用域值。有关相关文件,请参阅:
- 指令:指令定义对象(范围/真)
scope-如果设置为true,将为此指令创建一个新的作用域。如果同一元素上的多个指令请求一个新的作用域,则只创建一个新作用域。
- 如果window.location.href.indexOf('player=1')添加样式
- 如果选中复选框,则添加样式
- 尝试在随机文本和图像脚本中添加样式/更改字体
- 使用javascript为单词添加样式
- IMG悬停添加样式
- 如何在jquery locationpicker插件中为地图添加样式
- Jquery 在 ASP 文本框上添加样式不起作用
- 如何使用JavaScript/jQuery有条件地添加样式表
- 希望在提醒框中添加样式
- struts2 文本区域 仅为一个单词添加样式
- 使用Javascript为样式切换器添加样式表的最佳方法
- 从用户输入向元素添加样式
- Stylus:为在 JavaScript 中生成的 ID 添加样式
- 在 ajax 函数中向 DIV 添加样式更改
- 在更改时使用javascript函数时向html.dropdownlist添加样式
- .html() 在查询中使用 html() 添加样式
- 动态地向 HTML 表添加样式 - 使用 DOM、JS
- 我可以在 innerHTML 中添加样式标签吗?
- angular ng在条件下重复添加样式
- 制作一个Firefox插件来注入一些DIV并添加样式.那'是的