在AngularJS项目中,视图模型具有几个与导航相关联的属性,这些属性以单词“ show”开头。有一个函数可以在调用时将其设置为false:
var hideComponents = function() {
vm.showAddress = false;
vm.showEvent = false;
vm.showAccount = false;
//several others not displayed here
}
是否可以使用通配符将以“ show”开头的所有属性设置为false?我在想这样的事情:
vm['show'*] = false;
但该语法不正确。
答案 0 :(得分:3)
您可以这样做:
Object.keys(vm).forEach(key => {
if (key.startsWith('show')) {
vm[key] = false;
}
})
答案 1 :(得分:0)
以下是使用对象或数组的可能解决方案:
var vm.firstConfig = {
showAddress: false,
showEvent: false,
showAccount: false
};
var vm.secondConfig = {
showMenu: false,
showThis: false,
showThat: false
};
$scope.showHideComponents = function(value) {
for (var i in vm.firstConfig) {
vm.firstConfig[i] = value;
}
for (var i in vm.secondConfig) {
vm.secondConfig[i] = !value;
}
}
如果您是通过HTML调用的,请执行以下操作:
<input type="checkbox" ng-model="toggle" ng-click="showHideComponents(toggle)" />
或者,如果您只想将它们放在一行上:
vm.showAddress = vm.showEvent = vm.showAccount = false;