在Javascript / AngularJS中设置嵌套属性

时间:2017-11-06 10:40:04

标签: javascript angularjs angularjs-rootscope

我正在使用AngularJS,我想在我的控制器中设置一些配置变量。

例如:

 $rootScope.config.showPosts.users = true;
    $rootScope.config.showPosts.businesses = false;
    $rootScope.config.showAds.businesses = true;

声明"嵌套"的正确方法是什么?这些属性?目前我有:

 $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;

在设置之前,我不必单独声明每个级别的数组,是吗?提前致谢。

2 个答案:

答案 0 :(得分:3)

您可以使用对象litteral:

rootScope.config = {
  showPosts: { 
    users: true,
    businesses: false
  },
  showAds: {
    businesses: true
  }
};

答案 1 :(得分:1)

问题是您尝试在property上设置array

您写道:

$rootScope.config.showPosts = []; 

然后你试着写:

$rootScope.config.showPosts.users = true;

所以$rootScope.config.showPosts应该是object而不是array。像这样更改你的代码:

$rootScope.config = {};
$rootScope.config.showPosts = {}; 
$rootScope.config.showAds = {};
  

在设置之前,我不必单独声明每个级别的数组,是吗?

不,您不需要单独声明这些对象,您可以在一个语句中声明整个配置object,如另一个答案所示。