2015-04-05 108 views
3
元素的結合值

說我有這個div在ng-repeat條款:獲取角度

<div ng-repeat="item in list" class="myDiv" ng-click="doStuff(item)"> 
    {{item.title}} 
</div> 

而且它基於此模型:

$scope.list = [ 
    { 'title': 'Item 1', 'someData': 'lalala' }, 
    { 'title': 'Item 2', 'someData': '666' }, 
    { 'title': 'Item 3', 'someData': 'qwerty' } 
    ]; 

然後我將最終得到3周重複的div 。
現在我有一個外部腳本分析頁面,我想提取元素的數據。
因此,例如,如果我選擇第一個div var div1 = $('div.myDiv:first'),我可以從中獲得屬性ng-clickng-repeat。我也可以使用angular.element(div1).data('$binding')來獲得綁定{{item.title}}
但我真正想要的是這個特別的div的單個項目數據:即我想寫一個函數getItemData(element)將得到div1並返回{ 'title': 'Item 1', 'someData': 'lalala' }

這怎麼辦?
請注意,我需要一個解決方案,將與中繼器綁定和經常綁定。我基本上需要知道綁定到每個元素的實際數據。

+0

隨着外部腳本分析頁面僅怎麼可以讓你在頁面中查找。因此,如果不包含在頁面中,那麼'someDate'將不可用,就像你的例子。 Jquery應該完成這項工作。 – dec 2015-04-05 07:18:12

回答

7

您可以訪問元數據對象使用angular.element.scope方法:

var div1 = $('div.myDiv:first'); 
var dataItem = angular.element(div1).scope().item; 

演示:http://plnkr.co/edit/MzQRjdgqIpbe9LGrwMDZ?p=preview

+0

我認爲外部腳本無法訪問範圍。相反,他必須用jquery解析頁面並獲取值。 – dec 2015-04-05 07:16:09

+0

@dec是的,它當然可以。你可以從外面訪問幾乎所有的東西:範圍,服務,注入器,控制器等。 – dfsq 2015-04-05 07:16:57

+0

我認爲他想到另一個網頁,或者我錯了嗎? – dec 2015-04-05 07:19:39