2016-09-28 10 views
3

$ scope内の変数の場所を定義する属性( "Calendar.Scheduling.field.Appointment.ApptDateTime_Date")として渡される文字列があります。スコープ内の値の場所に到達するより良い方法は、子オブジェクトをループするよりも良い方法です。私は次のように$スコープのレイアウトがある

使用できるXPathの型宣言があるだろう期待していた。

$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 } 
 
    };

私は$スコープに得ることができます。 Calendar.Scheduling.field.Appointment.ApptDateTime_Date(子を経由せずに)。

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); 

答えて

2

私のお勧めは、lodashです。 Lodashは便利なユーティリティ機能を備えた非常に便利なライブラリです。それが提供する2つの機能はgetsetです。これらを使用すると、これを行うことができます。

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

としてそれとして渡すdataRefたびを形成することができるおかげで、これはデータを取得するために素晴らしい仕事しました。これは、dataRefの場所にデータのコピーを作成するようです。結果データを割り当てようとすると、$ scope dataRefオブジェクトにバインドされません。 '_.at($の範囲、dateRef)=モーメント(tempDateTime).format( 'MM/DD/YYYY');' はdateRefパスに使用できるオブジェクトの割り当てはありますか? –

+0

@ TXN_747私は答えのあなたのコメントに対処しました。値を設定するには 'set'を使うべきです –

0

を代わりにあなたのコードに一箇所に次のコードを設定することができ、この

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

ようAppointmentオブジェクトのApptDateTime_Dateプロパティにアクセスするたびに

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

上記のコードは、Appointmentのオブジェクトを参照しています。appointment変数

はその後、あなたがパラメータ

var dateRef = \"+ appointment + ".ApptDateTime_Date" +\"; 
関連する問題