我被困在隐藏并在导航栏上显示登录和注销元素。简单登录页面和导航栏具有不同的控制器。因此,当有人登录login.html以隐藏另一个控制器所拥有的导航栏中的元素时,我认为我需要在控制器之间共享数据。另一个故事是我需要将cookie放到同一个变量中。 http://plnkr.co/edit/Mwhg3maL4XAIt3wLQhgn
.factory('Data', function(){
var data = { FirstName: '' }
return {
getFirstName: function () {
return data.FirstName;
},
setFirstName: function (myVar) {
data.FirstName = myVar;
}
};
})
.controller('HomeCtrl', function($scope, $cookies, Data){
$scope.$watch(function () { return Data.getFirstName(); }, function (newValue, oldValue) {
if (newValue !== oldValue) $scope.myVar = newValue;
});
//$scope.myVar = $cookies.get("Some");
})
.controller('LoginCtrl', function($scope, $rootScope, $cookies, Auth, $state, Data){
$scope.myVar = '';
$scope.$watch('myVar', function (newValue, oldValue) {
if (newValue !== oldValue) Data.setFirstName(newValue);
});
$scope.login = function() {
Auth.$authWithPassword({email:$scope.email,password:$scope.password}).then(function(authData) {
$scope.auth = true; //
$scope.myVar = true;
$cookies.put('Some', true);
$state.go('home');
})
}
})
答案 0 :(得分:1)
我可能会使用角度事件解决这个问题
$scope.$emit('loggedIn', 'Some data perhaps?');
$scope.$on('loggedIn', function (event, data) {
console.log(data); // 'Data to send'
});