在 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,如另一个答案所示。