2016-11-04 26 views
0

常量在angularjs很酷,但是当我试图把两个对象在同一个常数,我得到了一个错误: 无法读取的不确定财产“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个不同的常量,一切都OK了。 那么,是否有可能在同一个常量中使用两个对象?我觉得我犯了一个语法错误,但我找不到它在哪里。

PS如果这非常重要,我用这个常量映射我的控制器内

感谢所有帮助

+0

错误“无法读取的未定义的属性‘筛选’”:似乎没有要在发布代码的任何属性'screening'。 – Claies

+0

Claies,对不起,我没有发布所有需要的信息,我会在几分钟内改进答案 –

+0

你可以租用我的答案吗? – Jigar7521

回答

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定义在哪里?

+0

纠正,对不起我的脏代码。所有这些都在我的工作代码中,我只是在你的代码片段中写下了脏例子 –

+0

,结果是相同的,“newProperty1”被映射,而“newProperty2”不是。但为什么? –

+0

和最重要的问题:如何映射这两个属性? –

1

可以定义这样也均匀恒定:

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