2016-09-28 1 views
3

Ich habe eine Zeichenfolge, die als Attribut ("Calendar.Scheduling.field.Appointment.ApptDateTime_Date") übergeben wird, die den Speicherort der Variablen im Bereich $ definiert. Gibt es eine bessere Möglichkeit, an den Speicherort des Werts im Bereich zu gelangen, als die untergeordneten Objekte zu durchlaufen? Ich habe gehofft, es würde eine XPath-Typdeklaration, die

Das $ scope Layout verwendet werden könnte, ist wie folgt:

$scope : { 
 
    \t Calendar: { 
 
    \t \t Office: { 
 
    \t \t \t Name: "Dr. Suess", 
 
    \t \t \t Address: "1234 Main St.", 
 
    \t \t \t City: "Whoville" 
 
    \t \t }, 
 
    \t \t Scheduling: { 
 
    \t \t \t LastName: "Doe", 
 
    \t \t \t FirstName: "Jane", 
 
    \t \t \t Appointment: { \t 
 
    \t \t \t \t "CallDateTime_Date" : "08/05/2016", 
 
    \t \t \t \t "CallDateTime_Time" : "10:24 AM", 
 
    \t \t \t \t "ApptDateTime_Date" : "10/12/2016", 
 
    \t \t \t \t "ApptDateTime_Time" : "06:00 AM" 
 
    \t \t \t } 
 
    \t \t } 
 
    \t } 
 
    };

Kann ich an den $ Umfang erhalten. Calendar.Scheduling.field.Appointment.ApptDateTime_Date ohne Iterieren durch die untergeordneten [s].

var dateRef = "Calendar.Scheduling.field.Appointment.ApptDateTime_Date"; 
tempString = tempString.replace(/\./g, '","'); 
var ar = JSON.parse('["' + tempString + '"]'); 

var currentRef = $scope; 
ar.forEach(function (entry) { 
    currentRef = currentRef[entry]; 
}); 

currentRef = new Date($scope.apptDate); 

Antwort

2

Meine Empfehlung wäre lodash zu verwenden. Lodash ist eine sehr praktische Bibliothek mit einer Reihe nützlicher Funktionen. Zwei Funktionen sind get und set. Mit denen können Sie dies tun:

var dateRef = "Calendar.Scheduling.field.Appointment.ApptDateTime_Date"; 
var date = _.get($scope, dateRef); //get value 

var newDate = new Date(); 
_.set($scope, dateRef, newValue); //set value 
+0

Danke, das hat super funktioniert, um die Daten zu bekommen. Es scheint eine Kopie der Daten im dataRef-Speicherort zu erstellen. Wenn ich versuche, Ergebnisdaten zuzuordnen, bindet es nicht an das $ scope-dataRef-Objekt. '_.at ($ scope, dateRef) = Moment (tempDateTime) .format ('MM/TT/JJJJ');' Gibt es eine Objektzuordnung, die mit dem dateRef Pfad verwendet werden kann? –

+0

@ TXN_747 Ich habe Ihren Kommentar in der Antwort angesprochen. Um einen Wert festzulegen, sollten Sie 'set' verwenden –

0

Anstatt jedes Mal Zugriff auf AppointmentApptDateTime_Date Eigenschaft des Objekts wie diese

var dateRef = "Calendar.Scheduling.field.Appointment.ApptDateTime_Date"; 

Sie folgenden Code an einer Stelle in Ihrem Code

var appointment = $scope.Calendar.Scheduling.field.Appointment; 

einstellen Der obige Code enthält einen Verweis auf Appointment Objekt in appointment Variable

dann können Sie dataRef jedes Mal, wenn, wie es als Parameter übergeben bilden

var dateRef = \"+ appointment + ".ApptDateTime_Date" +\"; 
Verwandte Themen