2015-04-05 79 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