在 Javascript / AngularJS 中设置嵌套属性
Setting nested properties in Javascript / AngularJS
我正在使用 AngularJS,我想在我的控制器中设置一些配置变量。
例如:
$rootScope.config.showPosts.users = true;
$rootScope.config.showPosts.businesses = false;
$rootScope.config.showAds.businesses = true;
声明这些 "nested" 属性的正确方法是什么?目前我有:
$rootScope.config = [];
$rootScope.config.showPosts = [];
$rootScope.config.showAds = [];
// ^ as you can see, I am declaring each key of the array individually :(
$rootScope.config.showPosts.users = true;
$rootScope.config.showPosts.businesses = false;
$rootScope.config.showAds.businesses = true;
我不必在设置数组之前分别声明数组的每一层,对吗?提前致谢。
您可以使用对象文字:
rootScope.config = {
showPosts: {
users: true,
businesses: false
},
showAds: {
businesses: true
}
};
问题是您试图在 array
上设置 property
。
您写道:
$rootScope.config.showPosts = [];
那你试试写:
$rootScope.config.showPosts.users = true;
所以 $rootScope.config.showPosts
在这里应该是 object
而不是 array
。像这样更改您的代码:
$rootScope.config = {};
$rootScope.config.showPosts = {};
$rootScope.config.showAds = {};
I don't have to declare every level of the array individually before I set it, do I?
不,您不需要单独声明这些对象,您可以在一个语句中声明整个配置 object
,如另一个答案所示。
我正在使用 AngularJS,我想在我的控制器中设置一些配置变量。
例如:
$rootScope.config.showPosts.users = true;
$rootScope.config.showPosts.businesses = false;
$rootScope.config.showAds.businesses = true;
声明这些 "nested" 属性的正确方法是什么?目前我有:
$rootScope.config = [];
$rootScope.config.showPosts = [];
$rootScope.config.showAds = [];
// ^ as you can see, I am declaring each key of the array individually :(
$rootScope.config.showPosts.users = true;
$rootScope.config.showPosts.businesses = false;
$rootScope.config.showAds.businesses = true;
我不必在设置数组之前分别声明数组的每一层,对吗?提前致谢。
您可以使用对象文字:
rootScope.config = {
showPosts: {
users: true,
businesses: false
},
showAds: {
businesses: true
}
};
问题是您试图在 array
上设置 property
。
您写道:
$rootScope.config.showPosts = [];
那你试试写:
$rootScope.config.showPosts.users = true;
所以 $rootScope.config.showPosts
在这里应该是 object
而不是 array
。像这样更改您的代码:
$rootScope.config = {};
$rootScope.config.showPosts = {};
$rootScope.config.showAds = {};
I don't have to declare every level of the array individually before I set it, do I?
不,您不需要单独声明这些对象,您可以在一个语句中声明整个配置 object
,如另一个答案所示。