无法将多个对象设置为角度常量

时间:2016-11-04 03:32:11

标签: angularjs

angularjs中的常量很酷,但是当我试图将2个对象放入同一个常量时,我​​遇到了一个错误: 无法读取未定义的属性'property1' 。 这是我的代码的一部分:

angular
    .module('myApp')
    .constant('CONST', {
        constantOne: {
            'property1': 'text1',
            'property2': 'text2'
        },
        constantTwo: {
            'property3': 'text3',
            'property4': 'text4'
        }
    })

在我的控制器中有类似的东西:

var items: {
  oldProperty: 'property1',
}    
items.newProperty1 = CONST.constantOne[items.oldProperty];
items.newProperty2 = CONST.constantTwo[items.oldProperty];

但是当我将这些对象分成2个不同的常量时,一切都还可以。 那么,是否可以在同一个常量中使用两个对象?我觉得我只是犯了一个语法错误,但我找不到它在哪里。

P上。 S。如果它确实重要,我使用这个常量来映射我的控制器

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

你也可以像这样定义甚至常数:

angular
.module('myApp')
    .constant('CONST', (function () {
        return {
            constantOne: {
                'property1': 'text1',
                'property2': 'text2'
            },
            constantTwo: {
                'property3': 'text3',
                'property4': 'text4'
            }
        };
 }))

答案 1 :(得分:1)

// Code goes here

angular
  .module('myApp', [])
  .controller('testController', ['$scope', 'CONST',
    function($scope, CONST) {

      var items = {
        field1: 'property1',
        field2: 'property2'
      }
      items.newProperty1 = CONST.constantOne[items.field1];
      items.newProperty2 = CONST.constantTwo[items.field2];
      console.log(items);
    }
  ]).constant('CONST', {
    constantOne: {
      'property1': 'text1',
      'property2': 'text2'
    },
    constantTwo: {
      'property3': 'text3',
      'property4': 'text4'
    }
  })
<!DOCTYPE html>
<html data-ng-app="myApp">

<head>
  <link rel="stylesheet" href="style.css">
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
  <script src="script.js"></script>
</head>

<body data-ng-controller="testController">


</body>

</html>

items.oldPropertyOne定义在哪里?