Html 如何在Ionic应用程序中在页面之间传递数据

Html 如何在Ionic应用程序中在页面之间传递数据,html,angularjs,variables,ionic-framework,ngcordova,Html,Angularjs,Variables,Ionic Framework,Ngcordova,我已经看过了所有的例子,并试图与我的爱奥尼亚项目整合,但失败了。这是我到目前为止所拥有的 我正在使用creator.ionic.com创建的项目 我有一个html页面,我正在加载一个JSON文件 (agentSchedule.html) <ion-view style="" title="Agent Schedule"> <ion-content class="has-header" overflow-scroll="true" padding="true"> &

我已经看过了所有的例子,并试图与我的爱奥尼亚项目整合,但失败了。这是我到目前为止所拥有的

我正在使用creator.ionic.com创建的项目

我有一个html页面,我正在加载一个JSON文件

(agentSchedule.html)

<ion-view style="" title="Agent Schedule">
 <ion-content class="has-header" overflow-scroll="true" padding="true">
  <ion-refresher on-refresh="doRefresh()">
    </ion-refresher>
    <div ng-controller="agentScheduleCtrl">
      <ion-list style="">
          <ion-item  class="item-icon-right item item-text-wrap item-thumbnail-left" ng-repeat="user in users">
            <img ng-src="{{ user.image }}">
          <h2>{{ user.fname }} {{ user.lname }}</h2>
          <h4>Role : {{ user.jobtitle }}</h4>
          <h4>Username : {{ user.username }}</h4><i class="button-icon icon ion-ios-arrow-forward"></i>
          </ion-item>
      </ion-list>
  </div>
</ion-content>
我是另一个我想将用户名传递到的页面,然后在我从那里进入的任何页面上使用它

(specificAgentDetails.html)

<ion-view style="" view-title="Agent Specific Schedule">
<ion-content class="has-header" overflow-scroll="true" padding="true">

</ion-content>
</ion-view>
如何将user.username JSON变量作为全局变量传递到下一页


任何帮助都会很棒-我会在圈子里转转

所以@shershen说的是真的大多数ionic应用程序都是作为SPA设置的,你要做的不是“ionic”的事情,而是AngularJS的事情。您需要设置一个服务来保存您的用户信息,然后与其他控制器共享

  • 创建工厂以共享数据
  • 将工厂注入第一个控制器并进行设置
  • 将工厂注入第二个控制器并检索它
  • 如果您熟悉OOP中的get/set,那么应该没有问题

    .factory('Data', function () {
    var user = {};
    return {
        getUser: function () {
            return user;
        },
        setUser: function (userparameter) {
            user = userparameter;
        }
    };
    })
    .controller('agentScheduleCtrl', function($scope, $http, $timeout, Data) {
     var url = "http://www.otago.ac.nz/itssdschedule/mobileappdevice/services/getUsers.php";
     var url = "users.json";
    $http.get(url).success( function(response) {
      Data.setUser(response);
      $scope.users = response;
    });
    
    然后在第二个控制器中:

    .controller('specificAgentDetailsCtrl', function($scope, Data) {
       $scope.user = Data.getUser();
    })
    

    确保视图和控制器之间的语法正确。我正在使用用户您正在使用用户,在控制器中设置断点以查看发生了什么。

    我使用一个小型通用工厂来完成这项工作

    .factory('LocalRepo', function () {
        var data = {}
        return {
            Get: function (key) {
                return data.key;
            },
            Set: function (key, val) {
                return data.key = val;
            }
        }
    })
    
    .controller('One', function($scope, LocalRepo) {
        //Set in first controller
        //TODO: $scope.users = .... from your call
        LocalRepo.Set('users', $scope.users);
    })
    
    .controller('Two', function($scope, LocalRepo) {
        //Get in second controller
        $scope.users = LocalRepo.Get('users');
    })
    

    使用它可以在控制器之间设置任何您想要的设置,这是一个非常简单的解决方案。使用
    $window
    ,它将保存所有控制器、服务或任何东西的全局可用数据

    .controller('agentScheduleCtrl', function($scope, $http, $timeout,$windows) {
        $window.users = [];
        var url = "http://www.otago.ac.nz/itssd-schedule/mobileappdevice/services/getUsers.php";
        var url = "users.json";
        $http.get(url).success( function(response) {
            $window.users = response;
        });
    })
    
    $window
    作为依赖项注入其他控制器,您可以像
    $window.users
    一样访问它


    希望它能帮助别人。

    Angular是一个SPA框架。你应该有一个(!!!)html页面,并在其中切换视图,而不是几个.html页面。对于爱奥尼亚来说,这是creator.Ionic.com的新功能,所以我只是按照我使用的格式来做,有什么想法吗?好家伙,我会试试的,。希望我能在同一个页面中工作,如何将变量传递到另一个页面?而不是页面。想想控制器。您希望在控制器之间传递数据。实际上,它们是状态,页面的概念与您的项目无关,因为如果您注意到正在路由到视图。现在在您的第二个控制器中,注入共享工厂,然后获取用户对象。上面的链接说明了如何注入共享数据服务,然后获取存储的值。因此,如果a中有{user.username}变量,我将如何将该数据使用到工厂中??从开始时的代码开始。-我需要一个函数来启动传输吗?
    .factory('LocalRepo', function () {
        var data = {}
        return {
            Get: function (key) {
                return data.key;
            },
            Set: function (key, val) {
                return data.key = val;
            }
        }
    })
    
    .controller('One', function($scope, LocalRepo) {
        //Set in first controller
        //TODO: $scope.users = .... from your call
        LocalRepo.Set('users', $scope.users);
    })
    
    .controller('Two', function($scope, LocalRepo) {
        //Get in second controller
        $scope.users = LocalRepo.Get('users');
    })
    
    .controller('agentScheduleCtrl', function($scope, $http, $timeout,$windows) {
        $window.users = [];
        var url = "http://www.otago.ac.nz/itssd-schedule/mobileappdevice/services/getUsers.php";
        var url = "users.json";
        $http.get(url).success( function(response) {
            $window.users = response;
        });
    })