我有一个字符串作为属性传递(“Calendar.Scheduling.field.Appointment.ApptDateTime_Date”),它定义了$ scope中变量的位置。是否有更好的方法来获取范围中值的位置,而不是循环遍历子对象。我希望有一个可以使用的xpath类型声明
$ scope布局如下:
$scope : {
Calendar: {
Office: {
Name: "Dr. Suess",
Address: "1234 Main St.",
City: "Whoville"
},
Scheduling: {
LastName: "Doe",
FirstName: "Jane",
Appointment: {
"CallDateTime_Date" : "08/05/2016",
"CallDateTime_Time" : "10:24 AM",
"ApptDateTime_Date" : "10/12/2016",
"ApptDateTime_Time" : "06:00 AM"
}
}
}
};
我可以进入$ scope。 Calendar.Scheduling.field.Appointment.ApptDateTime_Date,无需遍历子项[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);
答案 0 :(得分:2)
我的建议是使用lodash。 Lodash是一个非常方便的库,具有许多有用的实用程序功能。它提供的两个功能是get和set。有了这些,你可以这样做:
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
答案 1 :(得分:0)
而不是每次都像这样访问Appointment
对象的ApptDateTime_Date
属性
var dateRef = "Calendar.Scheduling.field.Appointment.ApptDateTime_Date";
您可以在代码中的一个位置设置以下代码
var appointment = $scope.Calendar.Scheduling.field.Appointment;
上面的代码保存了Appointment
变量
appointment
对象的引用
然后每次传递时都可以形成dataRef
作为参数
var dateRef = \"+ appointment + ".ApptDateTime_Date" +\";