什么是按类找到角元素的最佳方法?

时间:2014-07-25 17:33:52

标签: javascript jquery css html5 angularjs

嘿谢谢你查看我的问题。我试图按类找到角元素并将它们推入一个数组中以获得另一个函数。

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

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

4 个答案:

答案 0 :(得分:1)

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

对于角度,你需要考虑模型,而不是DOM。因此,您应该在行中添加一些ng-click,将它们添加到您的数组中(并且可能在取消选择时将它们从数组中删除)。然后,您已经在模型中使用了数组,而无需从DOM中进行任何选择。

答案 1 :(得分:0)

您可以使用

angular.element(element);

,在你的情况下

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

其中element可以是您的类选择器

答案 2 :(得分:0)

我建议使用(创建)指令。

答案 3 :(得分:0)

正如dnc253所提到的,从控制器引用DOM并不是在Angular中开发的有效方法。另一种方法可以做到这一点:

将表格中的数据从控制器注入您的视图中:

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

使用ng-repeat指令在视图脚本中渲染模型:

<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;
}

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