Показать сообщение отдельно
  #7 (permalink)  
Старый 25.06.2014, 12:21
Новичок на форуме
Отправить личное сообщение для Yetty Посмотреть профиль Найти все сообщения от Yetty
 
Регистрация: 24.06.2014
Сообщений: 4

Основную причину я всё равно не понял.

Приведу другой пример. Скажем, что мне список нужно обновить по некоторому событию от другого фреймворка.

Вот этот код не работает:
<!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 я не понимаю.
Ответить с цитированием