Я новичок в угловых js & ionic. Я использую https://github.com/rajeshwarpatlolla/ionic-datepicker Datepicker для одного моего приложения для Android. В настоящее время застрял один пункт.
Мне нужна динамическая сборка datepicker на странице из данных obj. В простом случае я знаю, как использовать Datepicker, но во время динамической генерации Datepicker я не знаю, как это сделать.
В нормальном случае, следуя директивному указателю на ионный датпикер, я использую & отлично работает.
<ionic-datepicker input-obj="datepickerObject">
<button class="button icon-left ion-calendar"> {{datepickerObject.inputDate | date:datepickerObject.dateFormat}}</button>
</ionic-datepicker>
Но в случае динамической генерации это должно быть что-то вроде этого -
// For Start_Date
<ionic-datepicker input-obj="'datepickerObject_Start_Date">
<button class="button icon-left ion-calendar">
{{datepickerObject_Start_Date.inputDate | date:datepickerObject_Start_Date.dateFormat}}
</button>
</ionic-datepicker>
// For End_Date
<ionic-datepicker input-obj="'datepickerObject_End_Date">
<button class="button icon-left ion-calendar">
{{datepickerObject_End_Date.inputDate | date:datepickerObject_End_Date.dateFormat}}
</button>
</ionic-datepicker>
Я получаю те Start_Date & End_Date в переменной javascript в поле fieldRowKey. Но я не могу понять, как это понять во время выполнения.
Ex -
"'datepickerObject_'+fieldRowKey"
OR
"{{'datepickerObject_'fieldRowKey}}"
Я знаю, что это просто вопрос конкатенации строк, и я много старался, но не получал правильного пути.
Нужно руководствоваться.
благодаря
Обновлен код
Вместо того, чтобы манипулировать строкой, я создал функцию контроллера, которая будет делать то же самое и возвращать требуемую строку. Вот код -
<ionic-datepicker input-obj="getDatePickerObj(fieldRowKey)">
<button class="button icon-left ion-calendar">
{{getDatePickerObj(fieldRowKey).inputDate | date:getDatePickerObj(fieldRowKey).dateFormat}}
</button>
</ionic-datepicker>
Функция контроллера -
// Method for creating datepicker obj string
$scope.getDatePickerObj = function(datePickerName){
var datePickerObjStr = 'datepickerObject_'+datePickerName;
console.log('datePickerObjStr : '+datePickerObjStr);
return datePickerObjStr;
}
Но, еще не повезло -.-
Понял. Я ошибался в функции getDatePickerObj()
. Вот обновленная версия.
// Method for creating datepicker obj string
$scope.getDatePickerObj = function(datePickerName){
var datePickerObjStr = 'datepickerObject_'+datePickerName;
console.log('datePickerObjStr : '+datePickerObjStr);
return $scope[datePickerObjStr];
}
Теперь он отлично работает.
Я думаю, что вы идете по неправильному пути, пытаясь объединить имена переменных во время выполнения.
Я не совсем понимаю, что именно вы пытаетесь сделать, но, надеюсь, следующее указывает вам в правильном направлении:
В вашем контроллере:
$scope.getDate = function(fieldRowKey) {
return ...; //return the corresponding date object
};
И в вашем html:
<ionic-datepicker input-obj="getDate(fieldRowKey)">
<ionic-datepicker input-obj="getDatePickerObj(fieldRowKey)"> <button class="button icon-left ion-calendar"> {{getDatePickerObj(fieldRowKey).inputDate | date:getDatePickerObj(fieldRowKey).dateFormat}} </button> </ionic-datepicker>
Но, все равно что-то где-то сломалось, и это не работает.$scope.getDatePickerObj = function(datePickerName){ var datePickerObjStr = 'datepickerObject_'+datePickerName; console.log('datePickerObjStr : '+datePickerObjStr); return datePickerObjStr; }