[英]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.