【问题标题】:How to get ID of element clicked in Angular?如何获取在Angular中单击的元素的ID?
【发布时间】:2015-01-06 16:38:36
【问题描述】:
<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 作为 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);
};

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

【问题讨论】:

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


    【解决方案1】:

    您不应该对 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将属性addressId添加到由ng-repeat创建的子作用域上,可以在内部访问,并且不监视该属性。

    【讨论】:

    • 啊,谢谢! 11 分钟 :) 天哪,ng-init 很漂亮!谢谢 X2 :D
    【解决方案2】:

    因为 ng-click 是评估 express 作为参数提供的指令,所以不需要花括号

    ng-click 评估它的内容,所以你不需要插值

    使用

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-19
      • 2012-05-03
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多