Angular.js - 重定向正在清理我的$ scope(?)

时间:2016-11-28 00:53:01

标签: javascript angularjs angularjs-scope frontend mean-stack

我有两个视图中使用的$ngController。第一个视图的<table>ng-repeat,列出了db中的所有数据。

我使用get($index)从表格中获取所选对象,并将其设置为$scope变量。

问题在于,当我无法在另一个视图上使用相同的$scope变量时,因为它的值为undefined。两个视图共享相同的ng-controller

我的问题是:重定向清理我的$ scope吗?我有什么方法可以在页面之间共享这些数据,因为我的应用程序不是单页吗?

我尝试的事情:

  • 1 - 通过工厂共享数据
  • 2 - 使用$rootScope

第一个视图 - 包含ng-repeat的表格

      <table class="table table-striped">
        <thead>
          <tr>
            <th>CNPJ</th>
            <th>Razão Social</th>
            <th>Ações</th>
          </tr>
        </thead>
        <tbody>
          <tr ng-repeat="company in companies | filter:{companyName:searchString}">
            <td> {{ company.cnpj }}</td>
            <td> {{ company.companyName }}</td>
            <td>
              <a href="/admin/view-company" ng-click="setCompanyFromTable($index)" class="btn btn-primary btn-xs" role="button">Visualizar</a>
              <button type="button" class="btn btn-warning btn-xs">Editar</button>
              <button type="button" class="btn btn-danger btn-xs">Deletar</button>
            </td>
          </tr>
        </tbody>
      </table>

控制器

angular.module("distCad").controller("adminCtlr", function($scope, $http, config, $window, $cacheFactory){
$scope.searchTerm = null;
$scope.hideSearcAlert = true;
$scope.companies = [];

$scope.cache = $cacheFactory('companyCache');

$scope.expireLogin = function(){
  localStorage.removeItem("type");
  $window.location.href = "/";
}

$scope.getResults = function(){
  $scope.searchTerm = true;
  $http.get("/api/companies").then(
    function successCallback(response){
        $scope.companies = response.data;
    },
    function errorCallback(response){
      console.log("aaaa" + response);
    }
  );
}

$scope.getCompany = function(){
   return $scope.cache.get("company");
}

$scope.setCompanyFromTable = function(index){
  $scope.cache.put("company", $scope.companies[index]);
}

});

目标视图 - 我正在测试的部分

  <div class="container" ng-init="getCompany()">
  <div class="row">
    <div class="col-md-12">
      <h2>Dados da empresa {{cache.get("company").companyName}}</h2>

0 个答案:

没有答案