Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Область видимости при роутинге (https://javascript.ru/forum/angular/59274-oblast-vidimosti-pri-routinge.html)

Wizlight 03.11.2015 20:18

Область видимости при роутинге
 
Как передавать изменение "переменной" при роутинге в другую область странички?
Вот есть такой код:
angular
    .module('lessonApp', ['ui.bootstrap', 'ngRoute']);

angular
    .module('lessonApp')
    .config(['$routeProvider','$locationProvider', function($routeProvider,$locationProvider){
        $routeProvider
            .when('/page:page',{
                templateUrl:function(params) {return '/site/lesson/pageAjaxUpdate?page='+ params.page+'&lectureId='+idLecture;},
                controller: function($scope, $http){
                    $http({method: 'GET', url: ''})
                        .success(function(data) {
                            //некий код
                            $scope.data = data;
                        })
                    }
                }
            })
    }]);

angular
    .module('lessonApp')
    .controller('lessonPageCtrl',lessonPageCtrl)

function lessonPageCtrl($scope) {
}

В представлении:
<div name="lecturePage">
    <div ng-cloak class="tabsWidget">
        <ng-view>
        </ng-view>
    </div>
</div>

Шаблон имеет вид:
<div
    ng-model="spots"
    ng-init='edit=<?php echo $edit; ?>;
spots=<?php echo json_encode($passedPages); ?>;
thisPage=<?php echo $thisPage-1; ?>;
editMode="<?php echo $editMode; ?>";
isAdmin="<?php echo AccessHelper::isAdmin(); ?>";
finishedLecture="<?php echo $finishedLecture; ?>";
lastAccessPage=<?php echo $lastAccessPage; ?>;'
    >
</div>
{{spots}}

При роутинге модель spots будет изменятся. Как мне ее выводить в другой части страницы.
Если прописать за пределами
<ng-view>
        </ng-view>

ничего не отображается

Wizlight 04.11.2015 18:45

Воспользовался идеей описаной на русскоязычном сайте ангуляра в коментариях
Роман и Наталья Ковальские Alexandr Ivanuna • 2 года назад
Я решил вопрос следующим образом:
1. Изменил ng-bind-template="Google Phone Gallery {{query}}" на
ng-bind-template="Google Phone Gallery {{newTitle}}"
newTitle - это просто поле корневого $rootScope

2. В шаблоне phone-list.html там где строка поиска
Search: <input ng-model="query">
я добавил директиву ng-change="reTitle()", которая вызывает функцию reTitle() при каждом изменении поля
Получилось: Search: <input ng-model="query" ng-change="reTitle()">

3. В контроллере
phonecatControllers.controller('PhoneListCtrl', ...
добавил функцию

$scope.reTitle = function(){
$rootScope.newTitle = $scope.query;
};

gorev.nikolay 10.11.2015 06:55

Что если хранить ее в $rootScope?


Часовой пояс GMT +3, время: 13:31.