我的角度函数在服务中定义,例如,
$delegate.isConfigurable = function (product, config) {
if (product) {
///.....
}
return config.getDetail();
};
现在,在controller
上,我通过以下方式致电:
mySer.isConfigurable(null, conf);
但是通过null
看起来对我来说有点尴尬。
我尝试拨打mySer.isConfigurable(conf);
,但这会使conf
与该功能的first parameter
匹配。
相反,还有其他方法只传递conf
吗?
答案 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();
};
现在如果你调用该函数传递一个参数,该参数将是config
和product
参数的值,将作为undefined
传递。
mySer.isConfigurable(conf);
答案 2 :(得分:3)
如果您的函数具有不同数量的参数,则可以使用arguments object
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)