我正在尝试执行以下操作:
eventService.emit = function(name, optionalArg1, optionalArg2,... ){
$rootScope.$broadcast(name, optionalArg1, optionalArg2,...);
};
具有无限数量的可选参数。 (广播“定义”:$ broadcast(字符串,args ......))
我想
eventService.emit =$rootScope.$broadcast;
可以工作,但它没有($ broadcast函数可以访问$ rootscope属性)和
eventService.emit = function(){
$rootScope.$broadcast(arguments);
};
似乎不起作用
感谢您的帮助
原始代码:
services.factory('eventService', function($rootScope, $http){
var eventObject = {};
eventObject.emit = function(name){
$rootScope.$broadcast(name);
};
return eventObject;
});
答案 0 :(得分:6)
你可以尝试
eventService.emit = function(){
$rootScope.$broadcast.apply($rootScope, arguments); //you can change "this" to whatever you need
};
这里你正在使用参数“array”执行$ rootScope。$ broadcast(它不是一个真正的数组,但表现得像一个),并在函数中使用这个(参数)。
答案 1 :(得分:1)
您可以使用apply()
(文档here):
eventService.emit = function(name, optionalArg1, optionalArg2,... )
{
$rootScope.$broadcast.apply(this, arguments);
};
[1]:
答案 2 :(得分:0)
当我想要很多选择时我会这样做:
function myFunction(options){
if( options["whateverOptionYouWant"] != undefined ){
//TODO: implement whatever option you want
}
if( options["whateverOTHEROptionYouWant"] != undefined ){
//TODO: implement whatever OTHER option you want
}
}
以及我需要的多个选项。
这样称呼:
myFunction({ whateverOptionYouWant: "some option variable" });
myFunction();
myFunction({
whateverOptionYouWant: "some option variable",
whateverOTHEROptionYouWant: "some other variable"});