使用来自不同州的$ scope进行Ng-repeat?

时间:2016-02-11 14:36:57

标签: angularjs ionic-framework angularjs-scope angularjs-ng-repeat

我有两个视图,第一个(搜索)有一个按钮,单击该按钮会将项目添加到$ scope.results1,然后将用户带到另一个视图(结果),其中ng-repeat是。

单击按钮并显示结果页面时,仅显示“1”。但是,如果我立即在控制器中调用测试功能,我将进入“结果”页面,同时显示“1”和“2”。在这两种情况下,控制台日志都显示数组results1包含2个项目。

从我读过的,解决方案是实现工厂或服务,但我对Ionic / angular相当新,所以不太确定如何开始这样的实现,任何指针都会受到赞赏!< / p>

搜索视图中的按钮:

<button class="button-full" id="find" ng-click="test();">Find</button>

SearchController:

 $scope.results1=[];
 $scope.results1.push(1);

 $scope.test = function(){
    $scope.results1.push(2);
    console.log("pushed 2");
    console.log($scope.results1);
    $state.go("tab.results");
  };

结果视图:

<ion-content ng-controller="SearchController">
    <body>
      <div id="results">
      <div class="list" id="search-items">
        <div ng-repeat="item in results1">
          {{item}}
        </div>
      </div>
    </div>
    </body>
</ion-content>

2 个答案:

答案 0 :(得分:1)

你可以实现一个服务来保存像这样的结果

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<ul class="list-group">
  <li class="list-group-item">
    <div class="row">
      <div class="col-md-offset-4 col-md-8 my-divider">TEST</div>
    </div>
  </li>
</ul>

将ResultService注入SearchController,如下所示,

var mainApplicationModule = angular.module("yourAppName");

mainApplicationModule.service('ResultService', function(){
    var results = [];
    this.add = function(data){    // to add data to results
        results.push(data);
    }

    this.getResults = function(){    // to get all results
        return(results);
    }
}) 

答案 1 :(得分:0)

你可以在改变状态时传递数据,

像这样配置状态:

.state('tab.results', {
  url: '/yoururl',
  templateUrl: 'yourtemplate',
  controller: 'yourcontroller',
  params: {
      "results": ""
  }
});

然后使用:

$state.go("tab.results",{"results": $scope.results1});

在第二个控制器中注入$ stateParams并获取值:

$scope.results = $stateParams.results;