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。如果它确实重要,我使用这个常量来映射我的控制器
答案 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
定义在哪里?