<input ng-model = "val">
<a href ng-click="val = 1"> val = 1 </a>
<div class="test" ng-controller="Ctrl">
<table>
<thead>
<tr>
<th>let</th>
<th>num</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="thing in data">
<td>
<a href ng-click="val = 1">
{{thing.let}}
</a>
</td>
<td>{{thing.num}}</td>
</tr>
</tbody>
有没有办法根据ng-repeat中的点击进行输入更改? 在这个jsfiddle中,你可以通过ng-repeat之外的点击来改变输入,但是在重复中它不会改变输入。
答案 0 :(得分:1)
问题是您在由val
创建的子范围中设置ng-repeat
属性。
解决方案是创建一个将此值分配给父作用域的函数:
$scope.changeVal = function(val){
$scope.$parent.val = val;
}
并使用ng-click="changeVal(1)"
答案 1 :(得分:0)
ng-repeat总是为每次迭代创建新的范围,所以如果你在ng-repeat中更改任何原始值(&#34; val&#34;在这种情况下),那么它将不会引用实际的&#34; val& #34 ;.所以要解决它,它应该是一个对象类型,例如。 obj.val的东西
以下是此问题的可行解决方案:
<div class="test" ng-controller="Ctrl" ng-init="obj.val=12345">
<input ng-model = "obj.val">
<a href ng-click="obj.val = 2"> val = 2 </a>
<table>
<thead>
<tr>
<th>let</th>
<th>num</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="thing in data">
<td>
<a href ng-click="obj.val = thing.num">
{{thing.let}}
</a>
</td>
<td>{{thing.num}}</td>
</tr>
</tbody>
</table>
<div>