如何获取在 Angular 中单击的元素的 ID?
How to get ID of element clicked in Angular?
<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 个 divs,其中 ids: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);
};
^ 基本上,我试图对每个 div 中的文本进行简单选择,我点击这些 ID。
你不应该为 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 并且可以在内部访问并且这个 属性 没有被监视。
因为 ng-click 是评估作为参数提供的 express 的指令,因此不需要大括号
ng-click 评估它的内容,所以你不需要插值
使用
ng-click="pubAddress.getClick('address-' + $index>
<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 个 divs,其中 ids: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);
};
^ 基本上,我试图对每个 div 中的文本进行简单选择,我点击这些 ID。
你不应该为 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 并且可以在内部访问并且这个 属性 没有被监视。
因为 ng-click 是评估作为参数提供的 express 的指令,因此不需要大括号
ng-click 评估它的内容,所以你不需要插值
使用
ng-click="pubAddress.getClick('address-' + $index>