2016-06-12 5 views
0

Ich möchte eine $scope.outsidescope außerhalb der Steuerung ändern. Ich verwende $routeProvider, um den Controller zu routen und zu ändern. Die $scope.outsidescope ist außerhalb der ng-view vorhanden.

Meine Frage ist Wie kann ich eine außerhalb der ng-view ändern.

Beispielcode:

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

Angular Code:

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}}
Verwenden Sie den Controller-Namen auf dem div –

+0

zu teilen Immer noch nicht klar, was du genau machen willst. Ihr Layout und Ihre Erläuterung sind stark vereinfacht. Die Verwendung eines Dienstes ist der beste Ansatz für die gemeinsame Nutzung von Daten über Controller hinweg. – charlietfl

+0

@charlietfl Yaa nach viel Forschung bekomme ich, dass es von Service durchgeführt wird. Aber wenn ich einen Controller zum ersten Div hinzufüge. es zeigt Winkelfehler. –

Antwort

0

Verwenden $ rootScope statt Umfang von $ Daten über die Anwendung zu teilen. Die Erstellung eines benutzerdefinierten Service ist jedoch der beste Ansatz.

+0

Haben Sie einen Beispielcode, wo ich verwiesen werde. –

+0

Dies ist verpönt Praxis und es ist selten erforderlich, Dinge in $ rootScope zu setzen, wenn sie global benötigt werden – charlietfl

-2

Es ist nicht möglich, $ scope außerhalb des Controllers zu ändern, da es außerhalb des Controllers nicht verfügbar ist.

Wenn Sie dies tun möchten, können Sie den übergeordneten Bereich verwenden, der $ rootScope ist, auf den Sie überall in Ihrer Anwendung zugreifen können.

Aber nach Ihrer Anforderung ist es besser, ng-bind anstelle von Ausdruck zu verwenden, und in Ihrem Router für jede URL, die Sie aufrufen können, ist es möglich, den Wert Ihrem Wert zuzuweisen.

+0

'ng-bind' und' {{}} 'tun genau das gleiche wie Richtungsbindung. Lesen Sie die Dokumentation. – charlietfl

+0

'Normalerweise verwenden Sie nicht ngBind direkt, aber Sie verwenden stattdessen die doppelte gelockte Markup wie {{Ausdruck}} die ähnlich, aber weniger ausführlich ist. – charlietfl

+0

ja Aber von Ihnen Benutzer {{Ausdruck}} und beim Laden der Auf der Seite wird Ihnen die {{expression}} angezeigt, bis der Wert nicht zugewiesen ist und mit ng-bind wird nichts angezeigt bis der Wert zugewiesen ist. So wie ich denke, ist es besser, ng-bind zu verwenden. –

0

Es gibt nur zwei Möglichkeiten, um Daten zwischen den Controllern

1) Die Bindungsdaten in $ rootScope 2) Bindungsdaten in Dienste

Verwandte Themen