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

时间:2017-09-24 15:22:01

标签: javascript angularjs angularjs-ng-repeat angularjs-ng-init

我有一个运行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>

然后我在控制台上收到一条错误,说“无法读取未定义的属性'长度”

我在这里缺少什么?控制器是否在定义var chapter

的函数之前运行

2 个答案:

答案 0 :(得分:0)

我想这是因为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

答案 1 :(得分:0)

实际上问题来自ng-repeat u r将项目(数组元素,基本类型而不是对象)发送到函数getData()。这就是为什么它返回无法读取未定义的属性长度。我希望这可以帮助你。

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