javascript - 如何获取在 Angular 中单击的元素的 ID?

标签 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 分别为:address-1、address-2、address-3 和 address-4。

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

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

应用代码:

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

^ 基本上,我试图在使用这些 ID 单击的每个 div 中简单选择文本。

最佳答案

您不应该对 ng-click 参数执行插值,因为它会由于存在无效表达式而导致解析错误(尽管过去曾在非常旧的 Angular 版本中工作),因此只需使用字符串连接即可。

 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 并且可以在内部访问并且不监视此属性。

关于javascript - 如何获取在 Angular 中单击的元素的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27803090/

相关文章:

javascript - ionic 3、自定义组件和ngClass绑定(bind)问题

angularjs - ng-重复 : access key and value for each object in array of objects

javascript - Angularjs - 它如何通过 ng-click 指向其中的所有 ng-repeat?

css - 将 ui-select 样式替换为原始样式

javascript - 长数组列表渲染使 Angular.js 中的页面滚动变慢

java - 用mysql数据绘制图表

JavaScript - 操作对象的嵌套多维数组

javascript - 将数组元素的值与前一个元素相加

javascript - 如何在所有$ http调用中以 Angular 设置$ http.error()?

angularjs - 如何注入(inject)模块并使其可供整个 Angular 应用程序访问