我想将ng-repeat元素传递给尝试过的javascript函数,但它无法正常工作
<tr ng-repeat="x in myArry">
<td><input type="text" value="{{x.firstname}}" id="{{x.firstname}}{{$index}}" onblur="FirstNamseCon(this.id, {{x.firstname}}{{$index}})" /></td>
<td><input type="text" value="{{x.lastname}}" id="{{x.lastname}}{{$index}}" onblur="FirstNamseCon(this.id, {{x.lastname}}{{$index}})"></td>
<td><input type="text" value="" id="{{x.fullname}}{{$index}}"></td>
<!--<td><label id="{{x.fullname}}{{$index}}"></label></td>-->
</tr>
这是我的javascript函数
function FirstNamseCon(value1,value2) {
document.getElementById('B Madhukar0').value = document.getElementById(value1).value + ' ' + document.getElementById(value2).value;
}
我想使用{{x.firstname}}{{$index}}
将名称的姓氏ID传递给函数,但我得到x
未定义错误如何解决此问题
答案 0 :(得分:1)
角度解决方案是使用ng-model
来更新值
var app = angular.module('my-app', [], function() {})
app.controller('AppController', function($scope) {
$scope.myArry = [{
firstname: 'John',
lastname: 'Thomas',
fullname: 'John Thomas'
}, {
firstname: 'Arun',
lastname: 'Johny',
fullname: 'Arun Johny'
}]
$scope.updateFullName = function(x) {
x.fullname = x.firstname + ' ' + x.lastname
};
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="my-app">
<div ng-controller="AppController">
<table>
<tr ng-repeat="x in myArry">
<td>
<input type="text" ng-model="x.firstname" ng-change="updateFullName(x)" />
</td>
<td>
<input type="text" ng-model="x.lastname" ng-change="updateFullName(x)">
</td>
<td>
<input type="text" ng-model="x.fullname">
</td>
</tr>
</table>
</div>
</div>
答案 1 :(得分:0)
使用ng-blur
投注onblur
{}}并将FirstNamseCon
作为$scope.FirstNamseCon
答案 2 :(得分:0)
在控制器内执行DOM操作被视为坏模式, 如果你想操纵范围变量,就不敢这样做 来自jQuery。
在输入字段上使用ng-model
以获得角度的双向绑定功能,然后您可以轻松地将范围ng-model
值的值传递给控制器。
通过在范围变量中分配对$scope.FirstNamseCon = FirstNamseCon
方法的公开FirstNamseCon
方法,使您在范围内可用。
<强>标记强>
<tr ng-repeat="x in myArry">
<td><input type="text" ng-model="firstName" ng-clur="FirstNamseCon(firstName)" /></td>
<td><input type="text" ng-model="x.lastName" ng-blur="FirstNamseCon(x.lastName)"></td>
<td><input type="text" ng-model="x.fullName" ng-blur="FirstNamseCon(x.lastName)"></td>
</tr>
答案 3 :(得分:0)
使用ng-model
代替value
。只需更改您的代码:
<tr ng-repeat="x in myArry">
<td><input type="text" ng-model="x.firstname" id="{{x.firstname}}{{$index}}" onblur="FirstNamseCon(this.id, {{x.firstname}}{{$index}})" /></td>
<td><input type="text" ng-model="x.lastname" id="{{x.lastname}}{{$index}}" onblur="FirstNamseCon(this.id, {{x.lastname}}{{$index}})"></td>
<td><input type="text" value="" id="{{x.fullname}}{{$index}}"></td>
<!--<td><label id="{{x.fullname}}{{$index}}"></label></td>-->
</tr>
但您不必使用onblur
。
答案 4 :(得分:0)
你可以这样做 -
onblur="FirstNamseCon('firstName',$index,x)
在您的javascript代码中,您可以获得这样的ID。
var id = x[type]+index;
// A['firstName']+0