我有一个Ember表单,我想根据用户禁用输入。 我从后端获得了一系列可修改的字段。
如何让这与Ember合作? 理想的情况是这样做,
{{input type="text" disabled=isModifiable("middleName") value=middleName}}
我知道这是不可能的。 相当新的Ember,建议将不胜感激。感谢。
答案 0 :(得分:1)
在Controller或Component中定义一个属性,如下所示:
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("fields.@each")
在模板中使用该属性,如下所示:
{{input type="text" disabled=isMiddleNameInputDisabled value=middleName}}