可选参数javascript技巧

时间:2012-08-09 19:51:09

标签: javascript jquery arguments

我正在尝试执行以下操作:

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;
});

3 个答案:

答案 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"});