对于这两种方法的例子参见本fiddle(使用颜色的位置是在困难jsfiddle)
选项1:ng样式和范围函数
NG-风格将让你这样做,并保持它整洁和可测试的,你应该定义范围的功能,如下面(三元运营商not currently supported为角,although 1.1.5 has added ternary support稳定1.0.x的版本角表达式)。
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> ...
编辑这是通过使用scope: true
和声明ng-repeat
元素的指令。由于对元素上的所有指令只创建一个新范围(假设至少有一个新范围请求新范围),则它可以访问ng-repeat
scope values。对于相关文件见:
范围 - 如果设置为true的新范围为这个指令将被创建。如果同一元素上的多个指令请求新范围,则只创建一个新范围。
每当我问一些问题时,我知道Angular比我以前想要的更强大和更复杂:D非常感谢你,我也会试着去看看指令里面的范围如何从ng-重复:) –