我有两个视图,第一个(搜索)有一个按钮,单击该按钮会将项目添加到$ 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>
答案 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;