Javascript ng重复中的动态ng模型未定义
我需要ng repeat内动态生成模型的帮助。我有一个带有ng重复表行的HTML。每行都有一个选项,可以使用“更新”按钮更新图像名称和价格 HTMLJavascript ng重复中的动态ng模型未定义,javascript,angularjs,angularjs-ng-repeat,ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,Ng Repeat,我需要ng repeat内动态生成模型的帮助。我有一个带有ng重复表行的HTML。每行都有一个选项,可以使用“更新”按钮更新图像名称和价格 HTML {{i.date_take | myDate}} {{i.position}} 使现代化 删去 这是我的控制器函数,它试图得到这些值 $scope.updateImage = function(id, $index){ $scope.models = {}; console.log(id); console.log($i
{{i.date_take | myDate}}
{{i.position}}
使现代化
删去
这是我的控制器函数,它试图得到这些值
$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)
$scope.updateImage=函数(id,$index){
$scope.models={};
console.log(id);
console.log($index);
log($scope.i.imageName[$index]);
log($scope.i.imagePrice[$index]);
};
//控制台日志的结果
4.
0
angular.js:13550 TypeError:无法读取未定义的属性“imageName”
范围$Scope.updateImage(位置sctrl.js:243)
fn时(编译时求值(angular.js:14432),:4:486)
昂贵的检查(angular.js:15485)
回调时(angular.js:25018)
范围$eval(angular.js:17229)
在范围内$apply(angular.js:17329)
在兰开夏。(见附件js:25023)
在htmlanchorement.dispatch(jQuery-2.1.4.min.js:3)
在htmlanchorement.r.handle(jQuery-2.1.4.min.js:3)
我猜我做错了什么,基于imageName和imagePrice不能未定义的错误。我希望你们能帮助我。如果您需要任何其他信息,请让我知道,我会提供。提前感谢您您在幻灯片图像中对
i进行了ng repeat
,这表示在每次迭代中,i
将仅在UI上具有当前集合元素(不在控制器范围内)。因此,您无法在控制器内获取$scope.i
值。您必须将updateImage
中的值作为参数传递,如ng click=“updateImage(i)”
。然后您可以使用UI上可用的i
对象
HTML
<td>
<a ng-click="updateImage(i)">
<button class="btn btn-block btn-success">Update</button>
</a>
</td>
<td>
<a ng-click="deleteImage(i, $index)">
<button class="btn btn-block btn-danger">Delete</button>
</a>
</td>
您不能在控制器中设置ng repeat
的i
对象。
我们还可以使用json中的任何其他键进行过滤
例如:
$scope.currentImageName = $filter('filter')(slideShowImages,{ id: $index});
这里假设slideShowImages
的字段id为值-$index
另外,在控制器定义中添加依赖项注入$filter
。您的$scope.slideShowImages是否在其每个对象中都有属性imageName?每个对象包含与$scope.slideShowImages中的其他对象相同的属性何谓$scope.i??不能像这样引用范围中的迭代值。实际上,您应该查找$cope.slideShowImages[$index]。i.imageName中的imageName[$index]索引是不必要的,因为您将整个对象作为参数传递到函数中。不管怎样,它都起作用了。谢谢你。如果不想通过过滤找到currentImageName,我会像我的回答中所示那样在方法参数中传递I对象,尽管基于$index
的过滤不是一个很好的选择。@Pankaj,是的,这是一个非常好的主意。着手谢谢。
$scope.updateImage = function(i){
console.log(i.imageName);
console.log(i.imagePrice);
};
$scope.currentImageName = $filter('filter')(slideShowImages,{ id: $index});