Ionic无法在$ rootScope中传递信息

时间:2016-08-28 12:49:44

标签: javascript ionic-framework

我想传递$ 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中的数据并在控制器的视图中显示它们?

谢谢你

1 个答案:

答案 0 :(得分:0)

您尚未通过&str.front()服务调用&str[0]功能。

logIn()

但是,

我建议你不要使用userProvider。您可以从工厂获得什么,您可能希望在通话后返回数据:

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

对于位置路由,请在控制器内部而不是工厂中进行。