繁体   English   中英

使用ng-init将数据从ng-repeat发送到另一个控制器

[英]Using ng-init to send data from a ng-repeat to another controller

我有一个运行ng-repeat的html文件,然后该ng-repeat中的每个项目都会生成一个模板,该模板也具有自己的控制器

在html文件上,我有类似以下内容:

<div ng-repeat="item in items">
  <div ng-include="'template.html" ng-init="getData(item)"></div>
</div>

然后,此模板具有其自己的控制器。

控制器具有函数getData(item),看起来像这样:

$scope.getData = function(item){
 var chapter = item;
}

$scope.myVec = chapter.myVec.length;

template.html看起来像:

<div ng-controller = "Controller">

<p>{{myVec}}</p>

</div>

然后我在控制台上收到一个错误,提示“无法读取未定义的属性'length'”

我在这里想念什么? 控制器是否在定义var chapter的功能之前运行?

我猜这是因为Chapter是$ scope.getData函数的局部变量。 例如

function foo(num){
   var myNum=num
}
foo(3)
console.log(myNum) // your will get undefinied

改为这样做

var myNum
function foo(num){
   myNum=num
}
foo(3)
console.log(myNum) // your will get 3

实际上,问题出在ng-repeat ur将项目(这是一个数组元素,原始类型不是对象)发送到函数getData()。 这就是为什么它返回无法读取未定义的属性长度的原因。 我希望这可以帮助你。

Var items = [ 'apple',  'mango'] ;
items.length //2
Items[0].length // error

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM