我的情况是主要功能名为:
Add_<Element_Type>_Page()
其中Element_Type
作为参数收到。
我可以看到两个选项来处理正确函数的调用:
编写一个相对较长的switch
构造,涵盖Element_Type
或
使用一些现有的机制/技巧(我不知道),通过它我可以使用收到的Element_Type
构建一个字符串,并调用一个名称包含在该字符串中的函数。
毋庸置疑,就参数而言,所有可以这种方式调用的函数都具有完全相同的签名。
显然,选项2将是最好的(易于维护且非常通用,因为无论何时添加新类型的页面都不需要进行任何更改)。
这可以在AngularJS框架内实现吗?
提前致谢。
答案 0 :(得分:1)
您可以使用.
表示法而不是$scope["Add_" + Element_Type + "_Page"]()
像这样,
$scope.Add_test_Page()
如果Element_Type
为test
,将致电controllerAs
或者如果使用vm["Add_" + Element_Type + "_Page"]()
语法,
Element_Type
其中Element_Type
是您提到的接收参数。
如果您想在HTML中使用它,可以在$scope
/ vm
(无论您使用哪种方式)中引用{{1}}并访问它。
答案 1 :(得分:0)
创建一个名为func-name的属性,并将您的动态字符串值(您的函数名称)传递给该属性,并在指令中执行此类操作。
scope: {
funcName: '@'
},
controller: function() {
$scope[$scope.funcName]();
}