AngularJS 将事件发送到另一个控制器($broadcast、$window.localStorage 等)
AngularJS Sending event to another controller ($broadcast, $window.localStorage, etc.)
我想将事件发送到另一个控制器。
为此,我已经知道使用 $rootScope.$broadcast
或 $scope.$emit
然后使用 $scope.$on
.
监听事件的方法
这是一种通用方式,但我的项目在不同的 JS 文件中启动控制器。
//In broadcaster.js
function broadcasterCtrl(~~~~~, broadcasterService){
~~~~~~~~~~
}
function broadcasterService(~~~~~){
~~~~~~~~~~
}
angular
.module('myApp')
.service('broadcasterService', broadcasterService)
.controller('broadcasterCtrl', broadcasterCtrl);
//In listener.js
function listenerCtrl(~~~~~, listenerService){
~~~~~~~~~~
}
function listenerService(~~~~~){
~~~~~~~~~~
}
angular
.module('myApp')
.service('listenerService', listenerService)
.controller('listenerCtrl', listenerCtrl);
由于这种结构,在调用视图(状态)时会启动侦听器控制器。所以我使用了 $window.localStorage.setItem('key', value)
,但我不喜欢它,因为我认为它非常脆弱。
有没有使用 $broadcast
的想法?还是使用 localStorage 安全?
在多个控制器之间共享信息的最佳方式是服务,因为服务是单例的,因此更容易管理和隔离 scope/variables 为此目的。
var app = angular.module('myApp', []);
app.factory('datepickerinfo', function() {
var keyValue;
datepickerinfo.setKey = function(key) {
keyValue = key;
};
datepickerinfo.getKey = function(){
return keyValue;
}
return datepickerinfo;
});
并注入它:
function MyCtrl($scope, datepickerinfo) {
$scope.dateKey = datepickerinfo.getKey();
}
本地存储:
您也可以使用本地存储。如果你没有任何重要数据。 (重要数据意味着不要使用本地存储共享用户重要信息。)否则,本地存储是一个好方法。但是,请记住,每当发生任何更新或删除时,您都应该正确处理本地存储。
我想将事件发送到另一个控制器。
为此,我已经知道使用 $rootScope.$broadcast
或 $scope.$emit
然后使用 $scope.$on
.
这是一种通用方式,但我的项目在不同的 JS 文件中启动控制器。
//In broadcaster.js
function broadcasterCtrl(~~~~~, broadcasterService){
~~~~~~~~~~
}
function broadcasterService(~~~~~){
~~~~~~~~~~
}
angular
.module('myApp')
.service('broadcasterService', broadcasterService)
.controller('broadcasterCtrl', broadcasterCtrl);
//In listener.js
function listenerCtrl(~~~~~, listenerService){
~~~~~~~~~~
}
function listenerService(~~~~~){
~~~~~~~~~~
}
angular
.module('myApp')
.service('listenerService', listenerService)
.controller('listenerCtrl', listenerCtrl);
由于这种结构,在调用视图(状态)时会启动侦听器控制器。所以我使用了 $window.localStorage.setItem('key', value)
,但我不喜欢它,因为我认为它非常脆弱。
有没有使用 $broadcast
的想法?还是使用 localStorage 安全?
在多个控制器之间共享信息的最佳方式是服务,因为服务是单例的,因此更容易管理和隔离 scope/variables 为此目的。
var app = angular.module('myApp', []);
app.factory('datepickerinfo', function() {
var keyValue;
datepickerinfo.setKey = function(key) {
keyValue = key;
};
datepickerinfo.getKey = function(){
return keyValue;
}
return datepickerinfo;
});
并注入它:
function MyCtrl($scope, datepickerinfo) {
$scope.dateKey = datepickerinfo.getKey();
}
本地存储:
您也可以使用本地存储。如果你没有任何重要数据。 (重要数据意味着不要使用本地存储共享用户重要信息。)否则,本地存储是一个好方法。但是,请记住,每当发生任何更新或删除时,您都应该正确处理本地存储。