Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng重复中的动态ng模型未定义_Javascript_Angularjs_Angularjs Ng Repeat_Ng Repeat - Fatal编程技术网

Javascript ng重复中的动态ng模型未定义

Javascript 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

我需要ng repeat内动态生成模型的帮助。我有一个带有ng重复表行的HTML。每行都有一个选项,可以使用“更新”按钮更新图像名称和价格

HTML


{{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});