2016-11-04 2 views
0

Konstanten in AngularJS sind cool, gesetzt, aber wenn ich zwei Objekte in derselben konstant zu setzen versucht, ich habe einen Fehler bekam: Kann nicht Eigentum ‚property1‘ undefinierter lesen. Hier ist der Teil meines Code:kann nicht mehrere Objekte als Winkelkonstanten

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

Und in meinem Controller so ähnlich:

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

Aber wenn ich getrennt diese Objekte zu 2 verschiedenen Konstanten, ist alles in Ordnung. Also, ist es möglich, zwei Objekte in der gleichen Konstante zu verwenden? Ich fühle, dass ich gerade einen Syntaxfehler gemacht habe, aber ich kann nicht finden, wo es ist.

PS Wenn es keine Rolle spielt, verwende ich diese Konstanten für die Zuordnung in meinem Controller

Danke für jede Hilfe

+0

Fehler "Kann Eigenschaft 'Screening' von undefined nicht lesen: Es scheint keine Eigenschaft 'Screening' im gebuchten Code zu sein. – Claies

+0

Claies, sorry, ich habe nicht alle benötigten Informationen gepostet, ich werde die Antwort in einigen Minuten verbessern –

+0

Kannst du meine Antwort überprüfen? – Jigar7521

Antwort

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>

Aber wo ist items.oldPropertyOne definiert?

+0

korrigiert, sorry für meine schmutzigen Code. all dies ist in meinem Arbeitscode, ich schrieb nur das schmutzige Beispiel –

+0

in Ihrem Snippet das ist das gleiche Ergebnis, "newProperty1" wurde zugeordnet und "newProperty2" war nicht. aber warum? –

+0

und die wichtigste Frage: wie diese beiden Eigenschaften zugeordnet werden? –

1

Sie können wie diese auch konstant definieren auch:

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