簡體   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