2014-07-25 89 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; 
} 

現在您可以跟蹤控制器中的選定行,因爲每行都有選定的屬性。

相關問題