2015-02-14 2 views
2

У меня есть форма Ember, где я хочу отключить ввод данных на основе пользователя. Я получаю массив модифицируемых полей из моего заднего конца.Ember, disable input, основанный на условии

Как мне заставить это работать с Ember? Идеальный вариант был бы сделать это,

{{input type="text" disabled=isModifiable("middleName") value=middleName}} 

Я знаю, что это не возможно. Довольно новый для Ember, совет будет оценен. Благодарю.

ответ

1

Определить свойство в вас контроллер или компонент, как это:

fields:[], 
loadFields : function(){ 
var that = this; 
$.get(FIELDS_API).done(function(serverResponse){ 
    //process server response in an array with objects with this form: 
    // [ field:"middleName", isDisabled:true}] 

    that.set("fields",fieldsArray); 
}) 
} 
isModifiable : function(fieldName){ 
var field = this.get("fields").findBy("field",fieldName); 
return (field) ? field.isDisabled: false; 
}, 
isMiddleNameInputDisabled : function(){ 
    return this.isModifiable("middleName"); 
}.property("[email protected]") 

Используйте это свойство в шаблоне, как это:

{{input type="text" disabled=isMiddleNameInputDisabled value=middleName}} 
+0

Спасибо, но у меня есть около 20 различных полей. Я нахожу создание 20 разных имен методов избыточными. В любом случае, из этого? – ShivamD

+0

Вы можете создать пользовательский компонент, который расширяет представление ввода и получает параметр fieldName. Компонент должен решить, отключен ли вход или нет. {{custom-input type = "text" fieldName = "middleName" value = middleName}} –

+0

Хорошо. Что делать, если я хочу сделать это для ввода любого типа? Как насчет окна выбора, datepicker, textarea и т. Д.? – ShivamD

Смежные вопросы