2016-06-12 2 views
0

Я хочу изменить $scope.outsidescope вне контроллера. Я использую $routeProvider для маршрутизации и изменения контроллера. $scope.outsidescope присутствует за пределами ng-view.

Мой вопрос Как я могу изменить $scope.value за пределами ng-view.

Пример код:

<html ng-app="Myapp"> 
....... 
<body> 
    <div> 
    {{outsidescope}} 
    </div> 
    <div class="" data-ng-view></div> 
</body> 
</html> 

Угловой Код:

var app = angular.module('Myapp', ['ngRoute']). 
    config(['$routeProvider', function($routeProvider) { 
    $routeProvider 
    .when("/", {templateUrl: "partials/home4.html", controller: "PageCtrl"}) 
    .otherwise({ 
     redirectTo: '/pages/404' 
    }) 
}]); 

app.controller('PageCtrl', ['$cookies',function ($scope) { 
    $scope.outsidescope = 'Some thing.'; 
} 
+0

{{outsidescope}}
Используйте имя контроллера на DIV –

+0

Все еще неясно, чего вы хотите делать точно. Ваш макет и объяснение упрощены. Использование сервиса - типичный наилучший подход к обмену данными между контроллерами. – charlietfl

+0

@charlietfl Yaa после много исследований, я понял, что это будет сделано службой. Но когда я добавляю контроллер в первый div. он показывает угловую ошибку. –

ответ

0

Использование $ rootScope вместо $ возможность для обмена данных через приложение. Но создание индивидуального сервиса - лучший подход.

+0

У вас есть образец кода, на который я ссылаюсь. –

+0

Это неодобрительно относится к практике, и редко приходится помещать вещи в $ rootScope, если они не нужны глобально. – charlietfl

-2

Невозможно изменить $ scope вне контроллера, потому что он недоступен вне контроллера.

Если вы хотите сделать это, вы можете использовать родительскую область, которая является $ rootScope, доступ к которой вы можете получить в любом месте приложения.

Но по вашему требованию лучше использовать ng-bind вместо выражения и в вашем маршрутизаторе для каждого URL-адреса вы можете позвонить s решив присвоить значение вашему такому значению.

+0

'ng-bind' и' {{}} 'делать то же самое, что и привязку по направлению. Прочтите документы. – charlietfl

+0

'Обычно вы не используете ngBind напрямую, но вместо этого вы используете двойную курсорную разметку, подобную {{expression}}, которая похожа, но менее verbose.' – charlietfl

+0

да Но вы пользователь {{выражение}} и когда вы загружаете на странице он покажет вам {{expression}} до тех пор, пока значение не будет присвоено, а с ng-bind покажет ничего до назначения значения. Так как я думаю, что лучше использовать ng-bind. –

0

Есть только два пути для обмена данными между контроллерами

1) Binding данные в $ rootScope 2) Связывание данных в услуг

Смежные вопросы