【发布时间】:2015-09-02 10:17:31
【问题描述】:
我尝试在CustomerController中调用civilitiyController的一个方法。所以,通过我的搜索,我找到了事件的经理来调用方法,但我没有成功将结果从 CivilityController 返回到 CustomerController。
我已经试过了:
1/ 文明控制器:
$scope.$on("getListCivilities", function(event, args){
$scope.civilities = getCivilitiesList();
});
customersController :
$scope.$broadcast("getListCivilities");
console.dir($scope.civilities) // after run civilities = undefined
2/CivilitiesController:
$scope.$on("getListCivilities" , function(event, args){
var list = getCivilitiesList();
return list;
});
客户控制器:
$scope.civilities = $scope.$broadcast("getListCivilities");
console.dir($scope.civilities); //display var of broadcast
3/ 编辑: 在第一次回答之后,我尝试了这个:
市政管理员:
function getCivilitiesList()
{
var reqGetCivilities = $http({ url: 'api/Civilities/Get' });
reqGetCivilities.success(function(data){
$scope.civilities = data;
$scope.$broadcast("getListCivilities", { list: $scope.civilities });
return data;
});
}
getCivilitiesList();
客户控制器:
function test()
{
$scope.$on("getListCivilities", function (event, args) {
$scope.civilities = args.list;
console.log('test0');
console.dir($scope.civilities);
});
}
test();
$scope.$on 从未被执行,我不明白为什么。
我希望有人可以帮助我。
【问题讨论】:
-
将 $scope.$broadcast 更改为 $rootScope.$broadcast 并将 rootscpope 注入您的文明控制器
-
我已经测试过了,还是不行。
-
我不确定这是声明和使用控制器的正确方法
-
我给出了我的控制器的两种方法。但这不是我的全部控制器。我将发布我的整个 CivilitiesController 但 customerController 它太长了,而且这个控制器的主要部分对我的问题没有意义。
标签: angularjs events methods controller broadcast