我有两个控制器,例如controller1和controller2。 我在controller1中定义了一个名为function1的函数。 当我尝试使用$ scope。$ broadcast从controller2调用function1时,在桌面浏览器中可以正常工作。
但是它不会进入$scope.$on
,它是在Ipad浏览器镶边中的controller1中编写的。
我尝试了不同的方法来使其工作。将controller1导入controller2,依此类推。但是,然后浏览器中的变量无法反映其值。
controller1中的 $scope.$on
:
$scope.$on("con1function", function(event, activity, action) {
$scope.function1(activity,'dashboard');
})
控制器2:
$scope.con2function = function() {
$scope.$broadcast("con1function",data[0], '');
}
谁能告诉我这是怎么回事?或者我也可以通过哪种方式为Ipad进行这项工作。
答案 0 :(得分:1)
您可以尝试$rootScope.$broadcast("con1function","Hi there")
广播消息,$scope.$on()
接收消息。
如果您的控制器不相关(作为父母或孩子),那么仅$scope.broadcast
或$scope.emit
可能不起作用。
var myApp = angular.module('myApp',[]);
myApp.controller('controller1', function ($scope,$rootScope) {
$scope.sendMessage = function(){
console.log("in sendMessage");
$rootScope.$broadcast("con1function","Hi there")
}
});
myApp.controller('controller2', function ($scope,$rootScope) {
console.log("in controller2");
$scope.$on("con1function", function(event, activity) {
console.log('dashboard',activity);
});
});
还要确保在脚本或HTML中加载了所需的控制器。