2016-09-07 5 views
0
<td colspan="1">{{case.Name}}</td> 
<td colspan="1">{{case.total}}</td> 
<td colspan="1">{{case.passed}}</td> 
<td colspan="1">{{case.failed}}</td> 
<td colspan="1" ng-click="showAll(case.Name)">{{case.totalCheck}}</td> 

Wenn der Benutzer diese Spalte (totalCheck) anklickt, wird der Name in einer Variablen $rootscope.name und andere HTML-Seite gespeichert wird geöffnet, in dem diese Variable i erfordern. Dieser Controller heißt angular1.den Austausch von Daten zwischen Steuerungen von verschiedenen HTML-Seiten mit rootscope

analyzer.run(function($rootScope) { 
    $rootScope.name= ''; 
}); 

$scope.showAll=function(item){ 
    $rootScope.name= item; 
    $window.open('/scripts.html'); 
} 

Für die andere Seite, habe ich eine andere Controller

var analyzer = angular.module('analyzer', []); 

analyzer.controller('angular2', function($scope, $rootScope) { 
    alert($rootScope.name); 
}); 

Hier ist es der Wert der Name schon sagt, ist nicht definiert. Wie teilen Sie die Variable zwischen 2 Seiten? .

+0

gehören beide Controller zu demselben Modul ?? – Ruhul

+0

ja. Wenn der andere HTML-Code geöffnet wird, wird die eckige Datei erneut geladen und neue Bereiche erstellt. Also vielleicht ist der Wert zurückgesetzt – matrixguy

+0

, wenn Sie einen Service oder eine Fabrik anstelle von $ rootScope verwenden können –

Antwort

0

Ich denke, Sie sollten ngRoute hier verwenden.

Folgen unter den Schritten (Sie selbst hrf="#/scripts.html/{{case.Name}}" verwenden können und case.name als routeParams und keine Notwendigkeit $rootScope passieren zu verwenden):

1) Fügen Sie //ajax.googleapis.com/ajax/libs/angularjs/1.4. 8/angular-route.js 2) Ändern Sie Ihre Funktion wie folgt.

analyzer.run(function($rootScope,$location) { 
     $rootScope.name= ''; 
    }); 

    $scope.showAll=function(item){ 
     $rootScope.name= item; 

     $location.path('/scripts.html'); 
    } 

3) Fügen Sie die Konfiguration für Ihr Routing hinzu.

var analyzer = angular.module('analyzer', ['ngRoute']); 
analyzer.config(function($routeProvider) { 
    $routeProvider 
    .when("/scripts.html", { 
     templateUrl : "scripts.html" 
    }); 
}); 
+0

Ich werde versuchen, aber $ location.path wird es auf der gleichen Registerkarte öffnen. Routing funktioniert möglicherweise, wenn ich denselben Speicherort aber nicht in einem neuen Tab verwende – matrixguy

Verwandte Themen