簡體   English   中英

Ionic無法在$ rootScope中傳遞信息

[英]Ionic can't pass information in $rootScope

我想在$ rootScope中傳遞數據

這是我的事實

userProvider.js

'use strict';

app
.factory('userProvider', function ($rootScope , $http , $location) {
var url='http://127.0.0.1:100/suitecrm/API/Login.php';
function logIn(user) {
  $http.post(url,user)
    .success(function (response) {
      $rootScope.user=response.data;
      $location.path('/profile');
      console.log(response);

    });
}

return {
  logIn: logIn
}
});

console.log(response); 在控制台中正常顯示數據

這是我要顯示當前用戶信息的配置文件的控制器

 'use strict';

app
.controller('Profile', function ($scope ,userProvider, $rootScope) {
    console.log($rootScope.user);
 })
 ;

但是在chrome的控制台中顯示給我未定義。

這是Routing.js

'use strict';

 var cacheActive=false;

 app.config(function ($stateProvider) {
 $stateProvider
 .state('homapage', {
  cache: cacheActive,
  url: '/login',
  templateUrl: 'js/views/homepage/Login.html',
  controller:'homepageLogin'
})
.state('profile', {
  cache: cacheActive,
  url:'/profile',
  templateUrl:'js/views/profiles/profile.html',
  controller:'profile'
})
});

如何在$ rootScope中傳遞數據並在控制器視圖中顯示它們?

感謝你

您尚未從userProvider服務調用logIn()函數。

app
.controller('Profile', function ($scope ,userProvider, $rootScope) {
    userProvider.logIn($scope.user);
    console.log($rootScope.user);
 })

但,

我建議您不要使用$rootScope 您可以從工廠中獲取任何信息,可能需要在致電后返回數據:

app.
factory('userProvider', function($http){

 var url = 'http://127.0.0.1:100/suitecrm/API/Login.php';

 function logIn(user) {
   $http.post(url,user).success(function (response) {
     return response;
   });
 }

 return {
   logIn: logIn
 }

})

然后,再次在不使用$rootScope ,在Profile控制器上執行以下操作:

app.
controller('Profile', function($scope, userProvider){
  $scope.user = {...}
  $scope.currentUser = userProvider.logIn($scope.user);
  console.log($scope.currentUser)
})

對於位置路由,請在控制器內部而不是工廠內進行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM