Основную причину я всё равно не понял.
Приведу другой пример. Скажем, что мне список нужно обновить по некоторому событию от другого фреймворка.
Вот этот код не работает:
<!DOCTYPE HTML>
<html lang="en" ng-app>
<head>
<title>Test</title>
<script type="text/javascript" src="js/angular/angular.min.js"></script>
<script type="text/javascript">
var MyEvent;
var GenerateEvent = function () {
MyEvent();
};
function FeaturesListCtrl($scope) {
$scope.GetSecondLevel = function () {
return [
{ b: '11' },
{ b: '22' }
];
}
var OnEvent = function () {
$scope.firstLevel = [
{ a: '1' },
{ a: '2' },
{ a: '3' }
];
// $scope.secondLevel = [
// { b: '11' },
// { b: '22' }
// ]
$scope.$apply();
}
MyEvent = OnEvent;
}
</script>
</head>
<body>
<input type="button" onclick="GenerateEvent()" value="Event">
<div ng-controller='FeaturesListCtrl'>
<ul>
<li ng-repeat='level1 in firstLevel'>
{{level1.a}}
<ul>
<!--li ng-repeat='level2 in secondLevel'-->
<li ng-repeat='level2 in GetSecondLevel()'>
{{level2.b}}
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>
А вот этот работает:
<!DOCTYPE HTML>
<html lang="en" ng-app>
<head>
<title>Test</title>
<script type="text/javascript" src="js/angular/angular.min.js"></script>
<script type="text/javascript">
var MyEvent;
var GenerateEvent = function () {
MyEvent();
};
function FeaturesListCtrl($scope) {
// $scope.GetSecondLevel = function () {
// return [
// { b: '11' },
// { b: '22' }
// ];
// }
var OnEvent = function () {
$scope.firstLevel = [
{ a: '1' },
{ a: '2' },
{ a: '3' }
];
$scope.secondLevel = [
{ b: '11' },
{ b: '22' }
]
$scope.$apply();
}
MyEvent = OnEvent;
}
</script>
</head>
<body>
<input type="button" onclick="GenerateEvent()" value="Event">
<div ng-controller='FeaturesListCtrl'>
<ul>
<li ng-repeat='level1 in firstLevel'>
{{level1.a}}
<ul>
<li ng-repeat='level2 in secondLevel'>
<!--li ng-repeat='level2 in GetSecondLevel()'-->
{{level2.b}}
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>
Мне необходимо понять как работать по первому варианту, так как функция может возвращать данные в зависимости от некоторых входных параметров...
Но в чём между первым и вторым разница для angular я не понимаю.