Javascript AngularJS调用名称构造为字符串的函数
我遇到的情况是,主要功能如下:Javascript AngularJS调用名称构造为字符串的函数,javascript,angularjs,Javascript,Angularjs,我遇到的情况是,主要功能如下: Add_<Element_Type>_Page() 添加页面() 其中,元素类型作为参数接收 我可以看到处理正确函数调用的两个选项: 编写一个相对较长的开关构造,涵盖元素类型的所有可能值,或 使用一些现有的机制/技巧(我不知道),通过这些机制/技巧,我可以使用收到的元素类型构建一个字符串,并调用一个名称包含在该字符串中的函数 不用说,就参数而言,所有可以以这种方式调用的函数都具有完全相同的签名 显然,选项2是最好的(易于维护且非常通用,因为每当添加
Add_<Element_Type>_Page()
添加页面()
其中,元素类型
作为参数接收
我可以看到处理正确函数调用的两个选项:
开关
构造,涵盖元素类型
的所有可能值,或元素类型构建一个字符串,并调用一个名称包含在该字符串中的函数
提前感谢。您只需使用
[…]
符号而不是
像这样,
$scope["Add_" + Element_Type + "_Page"]()
将调用$scope.Add_test_Page()
假设Element_Type
为test
或者如果使用controllerAs
语法
vm["Add_" + Element_Type + "_Page"]()
其中,Element\u Type
是您提到的接收参数
如果您想在HTML中使用它,可以在
$scope
/vm
中引用您的元素类型然后访问它。创建一个名为func name的属性,并将作为函数名的动态字符串值传递给该属性,在指令中可以执行类似操作
scope: {
funcName: '@'
},
controller: function() {
$scope[$scope.funcName]();
}
这些函数是使用$scope
或vm/ctrl
在控制器中编写的吗?疯狂的方法,这些函数是自动生成的吗?请出示一些代码。在Add__Page()
中应该发生什么?这些函数需要元素类型
在哪里?@tanmay,我不确定我是否明白你的意思,但我想你指的是AngularJS(即1)。@FDavidov不,它只是Angular1。我是问你的职能放在哪里?控制器?服务?@Iin,不知道为什么“疯狂”。函数不是自动生成的(尽管我希望可以…)。它们都是硬编码的。我想知道的唯一一件事是如何调用它们而无需使用开关
构造。我不知道是谁否决了你的答案,但第一个建议(使用[…]
)很有魅力。比你强!!!!(当然标记为答案)。@FDavidov是的,很好。很高兴我能帮忙:)