Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Ionic和Angular中将POST请求的结果传递到另一个页面_Javascript_Angularjs_Ionic Framework - Fatal编程技术网

Javascript 如何在Ionic和Angular中将POST请求的结果传递到另一个页面

Javascript 如何在Ionic和Angular中将POST请求的结果传递到另一个页面,javascript,angularjs,ionic-framework,Javascript,Angularjs,Ionic Framework,我正在使用ionic构建一个移动应用程序,并在应用程序中实现非常轻量级的身份验证(无安全性)。基本上,当用户在提交电子邮件和密码后点击登录按钮时,会使用POST请求根据数据库检查其信息。现在我的问题是,一旦我确认用户的信息在数据库中,我想将该响应对象从POST传递到一个配置文件页面,然后该页面可以显示用户的配置文件信息。如何将信息(响应对象)从一个控制器传递到另一个页面,以便在屏幕上显示?代码如下: app.js //Login view .state('signin', {

我正在使用ionic构建一个移动应用程序,并在应用程序中实现非常轻量级的身份验证(无安全性)。基本上,当用户在提交电子邮件和密码后点击登录按钮时,会使用POST请求根据数据库检查其信息。现在我的问题是,一旦我确认用户的信息在数据库中,我想将该响应对象从POST传递到一个配置文件页面,然后该页面可以显示用户的配置文件信息。如何将信息(响应对象)从一个控制器传递到另一个页面,以便在屏幕上显示?代码如下:

app.js

    //Login view
     .state('signin', {
      url: '/signin',
      templateUrl: 'templates/signin.html',
      controller: 'LoginCtrl'
  })

  // Profile view:
  .state('tab.profile', {
    url: '/profile',
    views: {
      'tab-profile': {
        templateUrl: 'templates/tab-profile.html'
        controller: 'ProfileCtrl'
      }
    }
  })
controllers.js:

$http.post(url, obj)
         .success(function (res, status, headers, config) {
          if (res == null){
             console.log("bad login");
          }
          else{
           // $scope.response = res;
            console.log(res);
            console.log("post successful");
            $state.go('tab.profile',{response:res});
          }
         });
tab-profile.html

<ion-view view-title="Profile">
  <ion-content>
    <ion-list>
      <ion-item >{{response.name}}</ion-item>
    </ion-list>
  </ion-content>
</ion-view>

{{response.name}

您可以在路由定义中定义参数。查看ui路由器模块的docu()以查看正确的语法


为了在两个控制器之间传递更复杂的对象,我将使用服务。Xou可以在POST解析后在服务中设置数据,并在状态更改后在另一个控制器中读取数据。阅读此链接以查看示例。希望这对您有所帮助:)

您可以创建一个
服务
,该服务将存储要传递给其他
控制器的数据

让我举一个例子:

var yourApp = angular.module('fooApp', []);

yourApp.factory('yourFactory', function() {
    var items = [];
    var storeService = {};

    storeService.addItem = function(item) {
        items.push(item);
    };
    storeService.removeItem = function(item) {
        var index = items.indexOf(item);
        items.splice(index, 1);
    };
    storeService.items = function() {
        return items;
    };

    return storeService;
});

function MyCtrl($scope, yourFactory) {
    $scope.newItem = {};
    $scope.yourFactory = yourFactory;    
}

这似乎是可行的,但当我将服务注入我的控制器时,它会改变我页面的外观,使顶部选项卡(我使用的是tabs结构)位于标题的顶部,你知道为什么会发生这种情况吗?@user2466886只需使用Google Chrome和关键字
调试器
调试发生的事情。请看下面的文章,我能够实现一个执行post请求并返回对象的服务。但是,在我的登录页面中,用户提供了用于post请求的登录信息。在我的个人资料页面中,我如何传递登录信息,以便再次使用它发出另一个Post请求。我想发出另一个请求的原因是因为我想显示配置文件信息。@user2466886只需在服务中创建新变量来存储所有必要的信息。您可以随时从服务中心获取此信息。