2016-08-28 10 views
0

は私factrotyある

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()関数を呼び出していないU

答えて

0

ありがとうございます。

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

しかし、

私はあなたが$rootScopeを使用せずにそれを行う示唆しています。

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

:あなたが行うことができますProfileコントローラ上で、$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 
} 

}) 

:どのようなことができますが、あなたの工場では、コールの後にデータを返すようにしたいことがあり場所のルーティングは、工場の代わりにコントローラの内部で行ってください。

関連する問題