【发布时间】:2016-09-04 11:11:31
【问题描述】:
我需要有关 ng-repeat 中动态生成模型的帮助。我有一个带有 ng 重复表行的 HTML。每行都有一个使用更新按钮更新图片名称和价格的选项。
HTML
<tr role="row" class="odd" ng-repeat="i in slideShowImages track by $index">
<td>
<img ng-src="{{i.thumb_path}}" width="100px" height="auto" >
</td>
<td>
<div class="form-group">
<input type="text" name="imageName" ng-model="i.imageName[$index]"
class="form-control" id="imageName" required>
</div>
</td>
<td>{{i.date_taken | myDate}}</td>
<td>
<div class="form-group">
<input type="text" name="imagePrice" ng-model="i.imagePrice[$index]"
class="form-control" id="imagePrice" required>
</div>
</td>
<td>
{{i.position}}
</td>
<td>
<a ng-click="updateImage(i.id_thumb, $index)">
<button class="btn btn-block btn-success">Update</button>
</a>
</td>
<td>
<a ng-click="deleteImage(i.id_thumb, $index)">
<button class="btn btn-block btn-danger">Delete</button>
</a>
</td>
</tr>
这是我试图获取值的控制器函数
$scope.updateImage = function(id, $index){
$scope.models = {};
console.log(id);
console.log($index);
console.log($scope.i.imageName[$index]);
console.log($scope.i.imagePrice[$index]);
};
// result of console logs
4
0
angular.js:13550 TypeError: Cannot read property 'imageName' of undefined
at Scope.$scope.updateImage (locationsCtrl.js:243)
at fn (eval at compile (angular.js:14432), <anonymous>:4:486)
at expensiveCheckFn (angular.js:15485)
at callback (angular.js:25018)
at Scope.$eval (angular.js:17229)
at Scope.$apply (angular.js:17329)
at HTMLAnchorElement.<anonymous> (angular.js:25023)
at HTMLAnchorElement.dispatch (jQuery-2.1.4.min.js:3)
at HTMLAnchorElement.r.handle (jQuery-2.1.4.min.js:3)
我猜我做错了什么,基于 imageName 和 imagePrice 不能未定义的错误。我希望你们能帮助我。如果您需要任何其他信息,请告诉我,我会提供。提前谢谢你
【问题讨论】:
-
您的 $scope.slideShowImages 是否在其每个对象中都有一个属性 imageName ?
-
每个对象都包含与 $scope.slideShowImages 中其他对象相同的属性
-
什么是 $scope.i ??您不能像那样引用范围内的迭代值。您实际上应该寻找 $cope.slideShowImages[$index].imageName[$index]
标签: javascript angularjs angularjs-ng-repeat ng-repeat