2014-07-25 91 views
0

嘿谢谢检查我的问题。我试图通过类找到角元素,并将它们推入另一个函数的数组中。按类别查找角元素的最佳方法是什么?

$scope.find = function() { 
    var someVar = []; 
    $scope.element.find('.selectedRow').each(function(){ 
     someVar.push($(this).find('td').eq(0).text()) 

    }) 
    return rows; 
    console.log(rows); 
}; 
+1

与控制器中的DOM工作是一个巨大的红旗具有角。你究竟想要完成什么? – dnc253

+0

我有一个表,我可以点击行来选择它们,我想实现的功能基础上找到了选择的行,只筛选选定行。 – user3791317

回答

0

您可以使用

angular.element(element); 

,并在你的情况

angular.element(document.querySelector('.selectedRow')) 

其中元素可以是你的类选择

1

首先,我强烈建议你阅读这个答案有关如何“思考”的角度:https://stackoverflow.com/a/15012542/1014979

随着角度,你需要考虑的模式,而不是DOM的条款。所以,你应该添加一些ng-click到你的行,将它们添加到你的数组(并可能在取消选择时将它们从数组中删除)。然后,您已经在模型中创建了数组,而无需从DOM中进行任何选择。

0

我会建议使用(创建)应该是一个指令。

0

正如dnc253提到的,从你的控制器引用DOM是不是在角发展的有效途径。另一种方法,你可以这样做:

在表中的数据注入到从控制器的看法:

.controller('controllerName', ['$scope', function($scope) { 
    $scope.rows = [ 
     { col1: 'foo', col2: 'bar', selected: false }, 
     { col1: 'baz', col2: 'foo', selected: false } 
    ]; 
}]); 

使用NG-重复指令来渲染模型视图脚本:

<table> 
    <tr ng-repeat="row in rows" ng-click="toggleRow(row)"> 
     <td>{{ row.col1 }}</td> 
     <td>{{ row.col2 }}</td> 
    </tr> 
</table> 

在你的控制器提供的toggleRow功能来打开你的行中选定的属性:

$scope.toggleRow = function (row) { 
    row.selected = !row.selected; 
} 

现在您可以跟踪控制器中的选定行,因为每行都有选定的属性。

相关问题