这些是我的控制者:
.controller('recommendedJobsCtrl', function($q,$scope, $ionicSideMenuDelegate,$window,$http,dataShare) {
$scope.text='hey world';
$scope.post=function(){
dataShare.sendData($scope.text);
console.log('sent: ' + $scope.text);
}
})
.controller('jobsCtrl', function($scope,dataShare) {
$scope.words=dataShare.getData();
})
这是我的工厂:
.factory('dataShare',function($rootScope){
var service = {};
service.sendData = function(data){
service=data;
$rootScope.$broadcast('data_shared', service);
},
service.getData = function(){
console.log('this.data is ' + service)
return service;
};
return service;
});
当console.log打印时,服务为空。我该如何解决这个问题?
答案 0 :(得分:2)
工厂代码编写不正确,您也应该使用角度服务而不是创建工厂,因为您只需要在控制器之间共享数据。虽然两者都是单身对象。
.factory('dataShare',function(){
var service = {
sendData: sendData,
getData: getData
};
var serviceData;
function sendData(data){
serviceData = data;
}
function getData(){
console.log('this.data is ' + serviceData);
return serviceData;
}
return service;
});
.service('dataShare',function(){
var serviceData;
this.sendData = function(data){
serviceData = data;
}
this.getData = function(){
console.log('this.data is ' + serviceData);
return serviceData;
}
});
答案 1 :(得分:0)
要接收您需要的数据:
$rootScope.$on('data_shared', function(evt, data) {
});
它是异步操作,因此您无法同步调用它。如果要抽象通信,则需要实现自己的观察者/订阅者模式。