У меня есть приведенный ниже код для отображения "Активный" как истинный, а InActive - как false
var statusJSON = {
'- Select -' : '',
'Active' : true,
'Inactive': false
};
$.each(statusJSON, function(key, val){
$statusFlag.append('<option value=' + val + '>' + key + '</option>');
});
Также я делаю следующее об изменении выпадающего списка;
$("#statusFlag").change(function() {
self.model.set({
statusFlag: $('#statusFlag').val()
});
});
Теперь проблема заключается в том, когда я отправляю форму, значение в statusFlag
представляется как строка ("true" или "false"). Как я могу гарантировать, что для statusFlag
установлено только логическое значение?
Я не уверен, что это работает, но дайте ему попробовать
$("#statusFlag").change(function() {
self.model.set({
statusFlag: $('#statusFlag').val().toLowerCase() == "true" ? true : false
});
});
Поскольку фактическое "значение" элемента представляет собой строку, а .val()
возвращает строку, чтобы получить логическое значение, вам нужно будет изучить эту строку и вернуть собственное логическое значение. Что-то вроде того:
statusFlag: $('#statusFlag').val() == 'true'
Это должно установить statusFlag
в true
если строки совпадают, в противном случае - false
.
Как я могу гарантировать, что для statusFlag установлено только логическое значение?
Определите "обеспечить" в этом случае. Вышеприведенный пример всегда устанавливает statusFlag
в логическое значение, потому что сравнение ==
всегда приводит к логическому значению. Однако другой код в другом месте может установить statusFlag
на что угодно. JavaScript динамически типизирован, поэтому нет никакого способа гарантировать от самого свойства, что он будет когда-либо установлен только для определенного типа.
Возможно, вы можете обернуть свойство в закрытии (сделав его "закрытым") и выставить пользовательскую функцию настройки, которая будет внутренне проверять все, что передается ей, и только когда-либо установить это значение в логическое. Но это кажется излишним, тем более, что в этот момент не имеет значения, какой тип он имеет, так как он в частном порядке инкапсулирован.
statusFlag: statusJSON[$('#statusFlag').val()]
?