如何在 Ionic 中使用 AngularJs 在不同的页面上显示数组元素



我有一个数组,它存储元素值,当我在控制台中查看它时,该值设置为 true,我看到对象已存储在数组中,但问题是我无法在下一页上查看它,该页面使用 ng-repeat 与同一控制器一起使用

我的JS代码将选中的项目保存到数组中

$scope.save = function() {
var array = [];
for(i in $scope.checkItems) {
console.log($scope.checkItems[i]);
if($scope.checkItems[i] == true) {
array.push(i);
}
}
console.log(array);
}    

在控制台上,它显示了我在清单中检查的正确数组元素

"我的控制台"窗口如下所示

我在下一页显示元素的代码如下

<ul>    
<li class="item itstyle" ng-repeat="items in array"
ng-model="checkItems[items.elem]" ng-change="print()">
{{ items.elem }}
</ul>    

我可能完全错了,因为我是网络和Ionic技术的新手,但非常感谢任何解决此问题的建议

如果您不想使用路由器传递状态,请考虑创建一个服务并将数组存储在其中。

Angular 会将服务对象注入控制器。 服务/工厂对象是单例。

myApp.factory('StateService', ['http',function($http) {
// Service injects http Service but is not used below, just an example
// Declare variables
var myArray = [];
var getMyArray = function() {
return myArray;
}; 
//factory method returns an object
return {
myArray: getMyArray
};
}]);

控制器.js

myApp.controller('fooController',['StateService', function(StateService) {
$scope.theArray = StateService.myArray();
}]);

从控制器在 html 页面中显示值,将变量声明为

$scope.array = [];

而不是使用 var. 声明,$scope 是与 HTML 页面交互所必需的。同时将变量数组替换为 for 循环和控制台中的 $scope.array

当您导航到另一个页面时,您可以通过以下方式将数组传递给它

$state.go('your-page-state', {data: myarray});

然后你可以从stateParams获取该值

.controller('myCtrl', function($scope, $state, $stateParams) {
$scope.results = $stateParams.data;
});

要使其在视图上可用,请使用$scope而不是 var 声明它。

干杯

最新更新