我试图在angularjs中从一个控制器发送到另一个控制器,但不起作用
服务不需要返回任何内容。您必须分配此变量中的所有内容。因为服务将在默认情况下创建实例并将其用作基础对象我试图在angularjs中从一个控制器发送到另一个控制器,但不起作用,angularjs,Angularjs,服务不需要返回任何内容。您必须分配此变量中的所有内容。因为服务将在默认情况下创建实例并将其用作基础对象 /*service */ app.service('sharedProperties', function () { var property = 'First'; return { getProperty: function () { return property; },
/*service */
app.service('sharedProperties', function () {
var property = 'First';
return {
getProperty: function () {
return property;
},
setProperty: function(value) {
property = value;
}
};
});
/*first contoller */
app.controller('loginCtrl',function($scope,$location,$http,$window,sharedProperties){
$scope.submit =function(){
var username=$scope.username;
var pass=$scope.password;
sharedProperties.setProperty(username);
$location.path('/userdashboard');
$window.location.reload();
});
}
});
/*second controller*/
app.controller('empController', function($route,$scope,$http,$routeParams,sharedProperties){
$scope.getEmployees = function(){
alert( sharedProperties.getProperty());
};
};
然后在控制器中
app.service('sharedProperties', function () {
this.property = 'First';
});
您是否一直在寻找使用factory
sharedProperties.property = $scope.username;
然后在控制器中使用它
app.factory('sharedProperties', function () {
var factory = {};
factory.property = 'Hello';
factory.setProperty = function (value) {
factory.property = value;
};
return factory;
});
编辑
试试这个,它会对你有用的
sharedProperties.setProperty($scope.username); // Setter
$scope.var = sharedProperties.property; //getter
var-app=angular.module('myApp',[]);
app.controller('myCtrl',函数($scope,$http){
函数sendData($scope){
var arrayData=[1,2,3];
$scope.$emit('someEvent',arrayData);
}
});
app.controller('yourCtrl',函数($scope,$http){
$scope.$on('someEvent',函数(事件,数据){
控制台日志(数据);
});
});
您可以将成员分配给$rootScope,它将为您的应用程序全局存储数据。只需向每个控制器注入$rootScope
例如
<div ng-app="myApp" ng-controller="myCtrl">
<button ng-click="sendData();"></button>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
function sendData($scope) {
var arrayData = [1,2,3];
$scope.$emit('someEvent', arrayData);
}
});
app.controller('yourCtrl', function($scope, $http) {
$scope.$on('someEvent', function(event, data) {
console.log(data);
});
});
</script>
这将使任何注入和使用$rootScope的控制器都可以使用“username”
/*first controller */
app.controller('loginCtrl',function($scope,$rootScope,$location,$http,$window,sharedProperties){
$scope.submit =function(){
var username=$scope.username;
var pass=$scope.password;
$rootScope.username = username;
$location.path('/userdashboard');
$window.location.reload();
});
}
});
我已经设置了sharedProperties.setProperty($scope.username);在一个控制器中,当从另一个控制器显示属性时,它显示为第一个属性,未修改为给定用户名…我在一个控制器中设置值,在同一个控制器中显示正确的值,但当我在第二个控制器中获得值并显示时,它显示“未定义”,请帮助解决它。。。。
/*second controller*/
app.controller('empController', function($route,$scope,$rootScope,$http,$routeParams,sharedProperties){
$scope.getEmployees = function(){
alert($rootScope.username);
};
};