Я пытаюсь сделать что-то очень простое в AngularJS, но просто не могу заставить его работать.
У меня есть директива, и я помещаю некоторый HTML-код в директиву, которая использует ng-repeat, в массив внутри области действия директивы.Проблема в том, что переменная цикла не определена, несмотря на то, что она повторяет количество элементов в массиве.
Я знаю это, потому что я печатаю элемент, в котором он находится в данный момент в цикле, и он печатает «undefined», но печатает это количество элементов в массиве.
Вот HTML:
<!DOCTYPE html>
<html ng-app="plunker">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css" />
<script data-require="angular.js@1.3.x" src="https://code.angularjs.org/1.3.15/angular.js" data-semver="1.3.15"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<p>Branches</p>
<ul>
<showbranch>
<tr>
<th>
Name
</th>
</tr>
<tr ng-repeat="subBranch in subBranches"
<td>
{{ f(subBranch.label) }}
</td>
</showbranch>
</ul>
</body>
</html>
и app.js:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
treeBranch = function(){};
$scope.branch = new treeBranch();
$scope.branch.label = "Main Branch";
var subBranch1 = new treeBranch(); subBranch1.label = "branch 1";
var subBranch2 = new treeBranch(); subBranch2.label = "branch 2";
var subBranch3 = new treeBranch(); subBranch3.label = "branch 3";
$scope.branch.subBranches = [ subBranch1, subBranch2, subBranch3 ];
});
app.directive('showbranch',function(){
return {
restrict:'E',
link:function(scope,element,attrs)
{
console.log("Attr: ", attrs);
console.log(scope);
scope.subBranches = scope.branch.subBranches;
scope.f = function(e){
console.log(e)
return e
}
}
}
})
Вот код кода: http://next.plnkr.co/edit/5uf6TcT0xqkl7TVe