<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。
答案 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评估内容,因此您不需要插值
使用
ng-click="pubAddress.getClick('address-' + $index>