在javascript

时间:2017-05-06 02:32:18

标签: javascript angularjs

我的角度函数在服务中定义,例如,

$delegate.isConfigurable = function (product, config) {
                if (product) {
                    ///.....
                }
                return config.getDetail();
            };

现在,在controller上,我通过以下方式致电:

mySer.isConfigurable(null, conf);

但是通过null看起来对我来说有点尴尬。

我尝试拨打mySer.isConfigurable(conf);,但这会使conf与该功能的first parameter匹配。

相反,还有其他方法只传递conf吗?

3 个答案:

答案 0 :(得分:3)

也许您可以只切换参数定义的顺序?

$delegate.isConfigurable = function (config, product) {
            if (product) {
                ///.....
            }
            return config.getDetail();
        };

然后你可以在这种情况下只调用mySer.isConfigurable(conf);product,并且评估为false。

答案 1 :(得分:3)

如果你不想使用null,那么你需要像波纹管一样交换你的功能参数。

$delegate.isConfigurable = function (config, product) {
                if (product) {
                    ///.....
                }
                return config.getDetail();
            };

现在如果你调用该函数传递一个参数,该参数将是configproduct参数的值,将作为undefined传递。

 mySer.isConfigurable(conf);

答案 2 :(得分:3)

如果您的函数具有不同数量的参数,则可以使用arguments object

Here is the documentation

  

arguments对象是一个类似于Array的对象,对应于传递给函数的参数。arguments对象是所有函数中可用的局部变量

所以你的代码将是

$delegate.isConfigurable = function() {
  var param = null,
    config = null;
  if (arguments && arguments.length == 2) {
    // you have param and config
    param = arguments[0];
    config = arguments[1];
  } else if (arguments && arguments.length == 1) {
    config = arguments[0];
  }
  return config.getDetail();
};

你可以通过一个或两个或n个参数来调用它

mySer.isConfigurable(conf)
mySer.isConfigurable(param,conf)
mySer.isConfigurable(param1,param2,conf)