2016-11-04 22 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' 
      } 
     }; 
}))