如何在Angular中获取元素的ID?

时间:2015-01-06 16:38:36

标签: javascript angularjs angularjs-ng-repeat angularjs-ng-click

<div ng-repeat="account in accounts" class="widget-container added_address">    
    <div id="address-{{$index}}"
         class="btc_public_address"
         ng-click="pubAddress.getClick(address-{{$index}}">
             {{account.address}}
    </div>

^ div上面是ng-repeat,我有大约4个div,其中id为:地址-1,地址-2,地址-3和地址-4用于ID。

我试图简单地在getClick函数中传递ID,但是出现了以下错误:

错误:[$ parse:syntax] http://errors.angularjs.org/1.2.19/ $ parse / syntax?

应用代码:

$scope.pubAddress = {};
$scope.pubAddress.getClick = function(the_id) {
    console.log(the_id);
    selectAddress(the_id);
};

// code to select text inside ID (works)
function selectAddress(element) {
    var text = document.getElementById(element);
    var range = document.createRange();
    var selection = window.getSelection();
    range.selectNodeContents(text);
    selection.removeAllRanges();
    selection.addRange(range);
};

^基本上我正在尝试对每个div中的文本进行简单的选择,我点击这些ID。

2 个答案:

答案 0 :(得分:2)

你不应该对ng-click参数执行插值,因为它会因为存在无效表达式而导致解析错误(虽然用于非常旧版本的角度),所以只需使用字符串连接。

 ng-click="pubAddress.getClick(address-{{$index}}"

应该是:

 ng-click="pubAddress.getClick('address-' + $index)"

似乎你正在使用ng-repeat,你可以使用ng-init一次性完成。

例如: -

 <div ng-repeat="account in accounts" ng-init="addressId='address' + $index"..>

使用ng-init在ng-repeat创建的子范围上添加属性addressId,并且可以在内部访问,并且不会监视此属性。

答案 1 :(得分:1)

因为ng-click是一个指令,用于评估作为参数提供的express,因此不需要花括号

ng-click评估内容,因此您不需要插值

enter image description here

使用

ng-click="pubAddress.getClick('address-' + $index>