使用rootscope在不同html页面的控制器之间共享数据

时间:2016-09-07 05:48:05

标签: angularjs rootscope

<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>

当用户点击此列(totalCheck)时,名称将存储在变量$rootscope.name中,并打开另一个html页面,我需要此变量。 该控制器名为angular1。

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

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

对于另一页,我有另一个控制器

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

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

这里说明名称的值是未定义的。你如何在2页之间共享变量?

1 个答案:

答案 0 :(得分:0)

我认为你应该在这里使用ngRoute。

按照以下步骤操作(您甚至可以使用hrf="#/scripts.html/{{case.Name}}"并将case.name作为routeParams传递,而无需使用$rootScope):

1)包括//ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.js 2)按照以下方式更改您的功能。

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

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

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

3)为您的路由添加配置。

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