控制器之间通信的正确方法是什么?
我目前正在使用一种可怕的软糖包括window:
function StockSubgroupCtrl($scope, $http) {
$scope.subgroups = [];
$scope.handleSubgroupsLoaded = function(data, status) {
$scope.subgroups = data;
}
$scope.fetch = function(prod_grp) {
$http.get('/api/stock/groups/' + prod_grp + '/subgroups/').success($scope.handleSubgroupsLoaded);
}
window.fetchStockSubgroups = $scope.fetch;
}
function StockGroupCtrl($scope, $http) {
...
$scope.select = function(prod_grp) {
$scope.selectedGroup = prod_grp;
window.fetchStockSubgroups(prod_grp);
}
}
Run Code Online (Sandbox Code Playgroud) 我有以下内容:
angular.module('test')
.controller('QuestionsStatusController1',
['$rootScope', '$scope', '$resource', '$state',
function ($rootScope, $scope, $resource, $state) {
$scope.action2 = function() {
$rootScope.$broadcast('action2@QuestionStatusController1');
}
}]);
angular.module('test')
.controller('QuestionsStatusController2',
['$rootScope', '$scope', '$resource', '$state',
function ($rootScope, $scope, $resource, $state) {
$rootScope.$on('action2@QuestionStatusController1', function {
//write your listener here
})
}]);
Run Code Online (Sandbox Code Playgroud)
我的理解是我需要取消注册听取事件.有人能告诉我如何编码/执行此操作吗?
我的应用程序中存在大量内存泄漏但我没有找到原因,这是后台.
许多听众受到如下约束:
$(element).on("keyup",function(){});
所以问题是
我是否需要通过以下方式取消绑定指令中的听众?
scope.$on("$destroy", function() {
$(element).off();
});
Run Code Online (Sandbox Code Playgroud)
顺便说一句,你如何找到Web应用程序中的内存泄漏?我使用chrome的配置文件(请参阅此处分析内存性能),但我无法跟踪内存泄漏的代码.你有什么建议吗?
非常感谢!